Re: Simple Query?
| От | Osvaldo Rosario Kussama |
|---|---|
| Тема | Re: Simple Query? |
| Дата | |
| Msg-id | 46E7F614.8070201@yahoo.com.br обсуждение исходный текст |
| Ответ на | Simple Query? (Koen Bok <koen@madebysofa.com>) |
| Список | pgsql-sql |
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 FROMsearch_item WHERE id_search=2 INTERSECT SELECT id_item FROM search_item WHERE id_search=3); Osvaldo
В списке pgsql-sql по дате отправления: