MySQL consulta de junção: Dois principal e uma tabela ligando

Lord Vader:

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.

passarã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 typee adicionar uma havingclá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

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=284193&siteId=1
Recomendado
Clasificación