Koen Bok escreveu:
I am doing some optimization on our search, but I need some advise...

table: item

id            name
--------------------------------------
1            iPod
2            Zune
3            Walkman

table: search_item

id_search    id_item
--------------------------------------
1            1
1            2
1            3
2            2
2            3
3            1
3            3


Now what I want to have is the items that match with id_search 1 and 2 and 3. Therefore I use the following SQL query.

SELECT * FROM item WHERE id IN
    (SELECT id_item FROM search_item WHERE id_search=1 AND id_item IN
        (SELECT id_item FROM search_item WHERE id_search=2 AND id_item IN
            (SELECT id_item FROM search_item WHERE id_search=3)));

This should only return id_item 3. Would this be the best SQL query to get this result? I have the feeling there should be something better, but I cannot find it. Anyone has a hint?




SELECT * FROM item WHERE id IN
    (SELECT id_item FROM search_item WHERE id_search=1
     INTERSECT
     SELECT id_item FROM search_item WHERE id_search=2
     INTERSECT
     SELECT id_item FROM search_item WHERE id_search=3);

Osvaldo

---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
      subscribe-nomail command to [EMAIL PROTECTED] so that your
      message can get through to the mailing list cleanly

Reply via email to