SQL-запрос для извлечения записи из 1 таблицы на основе 2 записей в таблице

Мне нужно написать запрос, который отобразит 25 лучших game_id, относящихся к определенному жанру. Таблица базы данных похожа на

| id | genre_id | game_id | is_primary |
----------------------------------------
  1    6000       12345      0
  2    6007       12345      1
  3    6000       23492      0
  4    6007       82837      1
----------------------------------------

Здесь вы можете видеть, что записи 1 и 2 имеют одинаковый game_id для обоих is_primary = 0 и 1. Что мне нужно сделать, так это выполнить запрос, имеющий оба жанра_id со мной, и я должен получить game_id, который подпадает под оба. Означает game_id, у которого 6000 в качестве жанра_id и is_primary=0 и 6007 в качестве жанра_id с is_primary=1.

Искал в сети, но безрезультатно.

Я пробовал этот запрос

 SELECT game_id FROM table_name WHERE 
(SELECT game_id FROM table_name WHERE genre_id=6000 AND is_primary=0) 
AND ganre_id=6007 AND is_primary=1;

Но этот запрос дает ошибку как Subquery returns more than one value.


person Astha    schedule 01.03.2012    source источник


Ответы (2)


Попробуйте этот запрос (ОБНОВЛЕНО)

SELECT game_id FROM table_name WHERE game_id IN(SELECT game_id FROM table_name WHERE genre_id=6000 AND is_primary=0)
 AND ( ganre_id=6007 AND is_primary=1);
person sam_13    schedule 01.03.2012
comment
Привет Большое спасибо! Это было так просто, и я пытался сделать это гораздо более сложным способом. Я тоже пытался использовать вышеуказанный запрос, но с И вместо ИЛИ. - person Astha; 01.03.2012