En utilisant une jointure gauche et inner join dans la même requête
Ci-dessous est ma requête à l'aide d'une jointure gauche qui fonctionne comme prévu. Ce que je veux faire est d'ajouter un autre filtre de tableau de cette requête, toujours plus loin, mais avoir de la difficulté à le faire. Je vais appeler cette nouvelle table table_3
et souhaitez ajouter des où table_3.rwykey = runways_updatable.rwykey
. Toute aide serait très appréciée.
SELECT *
FROM RUNWAYS_UPDATABLE
LEFT JOIN TURN_UPDATABLE
ON RUNWAYS_UPDATABLE.RWYKEY = TURN_UPDATABLE.RWYKEY
WHERE RUNWAYS_UPDATABLE.ICAO = 'ICAO'
AND (RUNWAYS_UPDATABLE.TORA > 4000 OR LDA > 0)
AND (TURN_UPDATABLE.AIRLINE_CODE IS NULL OR TURN_UPDATABLE.AIRLINE_CODE = ''
OR TURN_UPDATABLE.AIRLINE_CODE = '')
'*************EDIT Pour PRÉCISER *****************
Voici l'énoncé d'autres que inner join je voudrais l'utiliser et je tiens à combiner ces 2 états.
SELECT *
FROM RUNWAYS_UPDATABLE A, RUNWAYS_TABLE B
WHERE A.RWYKEY = B.RWYKEY
'***Ce que j'ai jusqu'à présent que les avis ci-dessous, mais l'obtention d'erreur de syntaxe
SELECT RUNWAYS_UPDATABLE.*, TURN_UPDATABLE.*, AIRPORT_RUNWAYS_SELECTED.*
FROM RUNWAYS_UPDATABLE
INNER JOIN AIRPORT_RUNWAYS_SELECTED
ON RUNWAYS_UPDATABLE.RWYKEY = AIRPORT_RUNWAYS_SELECTED.RWYKEY
LEFT JOIN TURN_UPDATABLE
ON RUNWAYS_UPDATABLE.RWYKEY = TURN_UPDATABLE.RWYKEY
NOTE: Si j'en commentaire l'intérieure de la rejoindre et de quitter la jointure gauche ou vice versa, il fonctionne mais quand j'ai à la fois des jointures dans la requête, c'est quand je me fais l'erreur de syntaxe.
- Et pouvez-vous nous dire quel est le problème? Ce que vous recevez et ce que vous attendez?
Vous devez vous connecter pour publier un commentaire.
Rappelez-vous que le filtrage d'un tableau de droite à gauche, rejoindre devrait être fait à adhérer à lui-même.
table2.class
peut contenir des valeurs null dans la première place. Condition de jointure filtre, tandis que là où l'état de les inclure. Aussi, tandis que toutes les lignes de la table table1 est renvoyée si la condition de jointure est utilisé, où la condition d'exclure les lignes de la table table1 qui n'ont pas de ligne correspondante dans la table2 oùclass is null or class = 'HIGH'
.Ajouter votre
INNER_JOIN
avant votreLEFT JOIN
:Si vous
LEFT JOIN
avant votreINNER JOIN
, alors vous n'obtiendrez pas les résultats detable_3
si il n'y a pas de ligne correspondante dansturn_updatable
. Il est possible que cela soit ce que vous voulez, mais depuis votre condition de jointure pourtable_3
uniquement les référencesrunways_updatable
, je suppose que vous voulez un résultat detable_3
, même si il n'y a pas de ligne correspondante dansturn_updatable
.MODIFIER:
Comme @NikolaMarkovinović souligné, vous devez filtrer votre
LEFT JOIN
dans la condition de jointure lui-même, comme vous le voyez ci-dessus. Sinon, vous n'obtiendrez pas de résultats à partir de la table de gauche (runways_updatable
) si cette condition n'est pas remplie dans le tableau de droite (turn_updatable
).EDIT 2: OP mentionné c'est en fait l'Accès, et pas MySQL
Dans l'Accès, c'est peut-être une différence dans la table des alias. Essayez plutôt ceci:
J'ai enfin compris. Merci à tous pour votre aide!!!
Si c'est juste une jointure interne que vous souhaitez ajouter, puis le faire. Vous pouvez ajouter autant de joint que vous le souhaitez dans la même requête. Veuillez mettre à jour votre réponse si ce n'est pas ce que vous voulez, bien que
Je ne suis pas vraiment sûr de ce que vous voulez. Mais peut-être quelque chose comme ceci:
SELECT *
àSELECT RUNWAYS_UPDATABLE.*, TURN_UPDATABLE.*
- l'erreur peut être provoquée par des noms de colonne en double sur table_3.J'ai toujours trouvé cette question lors de la recherche pour comment faire
LEFT JOIN
dépendent d'un autreINNER JOIN
. Voici un exemple de ce que je cherche quand je suis à la recherche d' "à l'aide deLEFT JOIN
etINNER JOIN
dans la même requête":Dans cet exemple,
b1
ne seront retenues que sib2
est également constaté.