kesm0
kesm0

Reputation: 875

Query with multiple LIKE and NOT IN condition

I want to search the same value but in multiple fields. But escaping inscriptions for the last event. Is it possible?

I've tried the following, but without success.

SELECT id, login
FROM PERSON
WHERE login like '%toto%'
OR nickname like '%toto%'
OR name like '%toto%'
AND id NOT IN (
    SELECT p.id
    FROM PERSONNE p, INSCRIPTION i, EVENT e
    WHERE p.id = i.id_person 
    AND i.id_event = e.id
    AND i.id_event = (
        SELECT MAX(id) FROM EVENT))
GROUP BY login, nom, pseudo

Upvotes: 3

Views: 3032

Answers (1)

John Woo
John Woo

Reputation: 263723

You just need to group the OR conditions.

SELECT id, login 
FROM   PERSON 
WHERE (login like '%toto%' OR nickname like '%toto%' OR name like '%toto%')
AND id NOT IN (SELECT p.id FROM PERSONNE p, INSCRIPTION i, EVENT e
               WHERE p.id = i.id_person 
               AND i.id_event = e.id
               AND i.id_event = (SELECT MAX(id) FROM EVENT))
GROUP BY login, nom, pseudo

Upvotes: 5

Related Questions