Eu tenho um projeto de Star Wars que estou trabalhando para Uni.
No meu banco de dados, eu tenho várias tabelas e tabelas de ligação. Estou tentando consulta
"O modo de transporte tem sido utilizado por Rey, Obi-Wan Kenobi e C-3PO?"
Resposta (obviamente) é Millennium Falcon.
Eu configurei a consulta usando associações internas, mas eu estou preso no final.
SELECT t.type AS OnlyTransportItCouldBe
FROM transport AS t
INNER JOIN person_transport AS pt
ON pt.transport_id = t.id
INNER JOIN person AS p
ON pt.person_id = p.id
WHERE p.name = 'Rey'
Os retornos acima de 3 navios, mas estou confuddled de como também verificar Old Ben e Goldenrod. Eu tentei AND p.name = "Obi-Wan Kenobi"
e ele retorna em branco. Se eu tentar WHERE p.name = 'Rey', 'Obi-Wan Kenobi'
isso falhar, se eu tentar WHERE p.name = 'Rey' AND 'Obi-Wan Kenobi'
, o resultado é em branco. Eu sei que é algo muito simples, mas eu não consigo encontrar uma solução.
Se a sua exigência é fazer com que os comuns modos de transporte que têm sido utilizados por Rey , Obi-Wan Kenobi e C-3PO , em seguida, você deve group by type
e adicionar uma having
cláusula como ethis:
SELECT t.type AS OnlyTransportItCouldBe
FROM transport AS t
INNER JOIN person_transport AS pt ON pt.transport_id = t.id
INNER JOIN person AS p ON pt.person_id = p.id
WHERE p.name IN ('Rey', 'Obi-Wan Kenobi', 'C-3PO')
GROUP BY t.type
HAVING COUNT(DISTINCT p.name) = 3