3 votes

mySQL LEFT JOIN seulement si

J'essaie d'effectuer un LEFT JOIN uniquement si l'une des colonnes de la table que je joins = 1.

Voici ce que j'ai jusqu'à présent.

SELECT * FROM size, oil LEFT JOIN purchase ON oil. oilId = purchase. purOilId
WHERE sizId = oilSizeId AND oilUnused ='' ORDER BY oilOurName

Ce que je dois ajouter est ci-dessous.

LEFT JOIN purhcase (only if purMark = 1)

C'est ce que je ne sais pas trop comment faire.

Il ne sera pas possible d'avoir un ET plus tard, car la table des huiles doit définir le nombre de lignes dans le résultat.

Merci

3voto

maimoona Points 384

Ajoutez la condition AND au JOIN comme ci-dessous

SELECT * FROM size, oil LEFT JOIN purchase ON oil.oilId = purchase.purOilId AND purchase.purMark = 1  
WHERE sizId = oilSizeId AND oilUnused ='' ORDER BY oilOurName

1voto

JanR Points 4961

Dans mysql, la seule façon dont je pense que vous pouvez le faire est d'avoir une sous-requête dans votre jointure similaire à ceci :

SELECT * FROM size, oil 
LEFT JOIN (
   SELECT * 
   FROM purchase
   WHERE purMark = 1
) purchase ON purchase.purOilId = oil.oilId /* or whatever your joining criteria is */
WHERE sizId = oilSizeId AND oilUnused ='' 
ORDER BY oilOurName

J'espère que cela vous aidera.

1voto

PakiPat Points 319

Curieusement, cette question a été posée et a reçu une réponse aquí juste une semaine plus tard qu'ici

0voto

Minesh Points 1914

Essayez ci-dessous :

SELECT * FROM size, oil 
LEFT JOIN purchase ON oil. oilId = purchase. purOilId
WHERE purMark = 1
sizId = oilSizeId AND oilUnused ='' 
UNION
SELECT * FROM size, oil 
WHERE purMark != 1
sizId = oilSizeId AND oilUnused ='' 

Ou

SELECT * FROM size, oil 
LEFT JOIN purchase ON oil. oilId = purchase. purOilId AND purMark = 1
WHERE sizId = oilSizeId AND oilUnused =''

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X