Mon code génère une requête volumineuse. Une version simple estEst-il possible de JOIN avec un var depuis un LEFT JOIN sans détruire les lignes?
SELECT * FROM main_table as mt
JOIN user_data AS ud ON mt.user_id=ud.id
LEFT JOIN ban_Status AS bs ON ud.status_id=bs.id
JOIN AnotherTable ON bs.data=AnotherTable.id
REMARQUE: Ce code n'a pas été testé. Lorsque je supprime la dernière jointure, j'obtiens des résultats.
Je peux aussi le changer en jointure gauche mais ce serait faux. Si ud.status n'est pas nul je voudrais une jointure comme je le fais toujours quand je fais une requête select de ban_Status. Comment puis-je réparer ça? dois-je écrire joindre gauche sur chaque table si je suis parti rejoindre la table parent? cela ne me donnerait-il pas des effets secondaires?
J'utilise ATM sqlite mais passe à Tsql
+1. Cela semble fonctionner mais pourriez-vous également expliquer pourquoi un INNER JOIN dans une chaîne de LEFT JOINs semble faire que tous ces JOINS GAUCHE se comportent comme une INNER JOIN? –
Si 'LEFT JOIN' ne peut pas joindre une ligne, alors il retournera' NULL' dans tous ses champs. Ensuite, si vous utilisez un 'INNER JOIN' sur un identifiant' NULL', la ligne entière sera rejetée (en raison de la règle 'INNER JOIN'). –
@Alex - simple, merci. –