Запрос SQL для извлечения записи из 1 таблицы на основе 2 записей в таблице - PullRequest
0 голосов
/ 01 марта 2012

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

| 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. Что мне нужно сделать, это выполнить запрос, содержащий и genre_id со мной, и мне нужно получить game_id, который попадает под , Обозначает game_id, у которого 6000 как genre_id и is_primary = 0, а 6007 как genre_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.

Ответы [ 2 ]

1 голос
/ 01 марта 2012

JOIN работает намного лучше, чем подзапросы :

SELECT t1.game_id
FROM table_name t1
JOIN table_name t2 ON (t1.game_id = t2.game_id AND t2.genre_id = 6000 AND t2.is_primary = 0)
WHERE (t1.genre_id = 6007 AND t1.is_primary = 1)
1 голос
/ 01 марта 2012

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

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...