MySQL запрос на одну таблицу, чтобы найти несколько строк - PullRequest
0 голосов
/ 29 апреля 2011

Я пытаюсь найти способ найти общие кредиты для двух человек в базе данных фильмов, например:

таблица: «кредиты»
столбцы: «идентификатор», «фильм»,'person'

Другая моя проблема - у человека может быть несколько кредитов на один и тот же фильм, так как я могу отфильтровать дубликаты?Любая помощь будет оценена.Вот что я имею до сих пор.Я на правильном пути?

SELECT DISTINCT movie
FROM credits
WHERE person = 'condition1' OR person = 'condition2'
GROUP BY movie
HAVING COUNT(*)=2

Ответы [ 4 ]

1 голос
/ 29 апреля 2011

Это должно работать:

SELECT DISTINCT movie
FROM (
      SELECT movie, COUNT(person) AS contributors
      FROM credits
      WHERE person IN('person1','person2')
      GROUP BY movie, person
      HAVING contributors>1
     ) t1
1 голос
/ 29 апреля 2011
SELECT DISTINCT c1.movie
FROM credits AS c1
JOIN credits AS c2 on (c1.movie = c2.movie)
WHERE c1.person = 'john'
AND c2.person = 'kate'
0 голосов
/ 29 апреля 2011
select distinct cr1.movie
from credits as cr1
join credits as cr2
using (movie)
where cr1.person = {person 1 goes here}
and cr2.person = {person 2 goes here}
0 голосов
/ 29 апреля 2011

Вам это не нужно HAVING COUNT(*)=2.Он дает вам только фильмы с двумя матчами (один человек с двумя кредитами или с condition1 и condition2).Более того - вам вообще не нужно group by при использовании distinct (в данном случае).

SELECT DISTINCT movie
FROM credits
WHERE person = 'condition1' OR person = 'condition2'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...