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?

---------------------------(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