-1
votes

Rejoignez quatre tables avec MySQL

J'ai quatre tables, avec leurs "arguments" respectifs xxx pré>

J'ai besoin de former le tableau suivant, P>

SELECT person_ID, movie_ID
FROM `Movie` A JOIN `Ticket` B ON A.movie_ID = B.movie_ID 


SELECT person_DNI, B.person_ID, A.segment
FROM Date A 
LEFT JOIN Person B ON A.person_dni=B.person_DNI


2 commentaires

Qu'est-ce que person_dni ? et quelle est la date la table? Vous devez expliquer la cardinalité de la table pour voir quel ordre nous avons fait les jointures. Est une date avoir plusieurs personnes ou une personne plusieurs dates


et voir: Pourquoi devrais-je fournir un MCRE pour ce qui me semble être une requête SQL très simple?


3 Réponses :


0
votes
 SELECT D.person_DNI,  D.Segment, P.person_ID, T.movie_ID
 FROM Date D
 JOIN Person P 
   ON D.person_DNI = P.person_DNI
 JOIN Ticket T
   ON P.person_ID = T.person_ID 

 -- Because you dont use anything from Movie like Movie.name 
 -- you dont really need join Movie to get movie_id
 JOIN Movie M
   ON T.movie_ID = M.movie_ID

0 commentaires

0
votes

Comme vous n'avez pas détaillé la signification de chaque colonne, ma réponse effectue des jointures intérieures sans attention à la commande.

De préférence, vous pouvez rejoindre plusieurs tables dans une seule requête: P>

SELECT t1.person_ID, person_DNI, movie_ID, Segment
FROM (
    SELECT person_ID, movie_ID
    FROM `Movie` A JOIN `Ticket` B ON A.movie_ID = B.movie_ID 
) t1 
JOIN (
    SELECT person_DNI, B.person_ID, A.segment
    FROM Date A 
    LEFT JOIN Person B ON A.person_dni = B.person_DNI
) t2
ON t1.person_ID = t2.person_ID


0 commentaires

0
votes

Vous pouvez utiliser une jointure naturelle dans mysql: xxx

Pour plus d'informations, consultez ce lien: https://www.w3resource.com/mysql/advance-query-in-mysql/mysql-natural-join.php

J'espère que cela aide.


0 commentaires