0
Disons qu'il ya 4 tables, de sorte que t1.id = t2.pid
et t3.id = t4.pid
Comment joindre deux requêtes mysql?
Comment récupérer les enregistrements où t1.val1 != t3.val1 AND t2.val2 != t4.val2
?
Disons qu'il ya 4 tables, de sorte que t1.id = t2.pid
et t3.id = t4.pid
Comment joindre deux requêtes mysql?
Comment récupérer les enregistrements où t1.val1 != t3.val1 AND t2.val2 != t4.val2
?
Vous devez utiliser LEFT OUTER JOIN
pour rechercher des enregistrements non correspondants à partir de deux tables.
SELECT *
FROM t1
INNER JOIN t2
ON t1.id = t2.pid
LEFT OUTER JOIN t3
ON t2.pid = t3.id
LEFT OUTER JOIN t4
ON t3.id = t4.pid
WHERE (t1.val1 IS NULL OR t3.val1 IS NULL)
AND (t2.val2 IS NULL OR t4.val2 IS NULL)
visite: http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html
mettre un peu plus d'efforts. Expliquer avec un exemple – bugwheels94
J'ai déjà écrit les requêtes réelles avant et n'a pas eu de réponse, donc je résume ici. fondamentalement t1 + t2 forme un jeu d'enregistrements, disons r1, de même t3 + t4 est dit r2, comment puis-je trouver les enregistrements qui existent dans r2 mais pas dans r1? – Bluemagica
Il n'y a pas une question récente de vous que je peux voir qui couvre un terrain similaire. Vous devriez être plus prudent et complet avec le schéma des tables. Par exemple, voulez-vous comparer les enregistrements de l'ensemble d'enregistrements '(t1, t2)' avec les enregistrements de l'ensemble d'enregistrements '(t3, t4)' sur la base des numéros d'identification? Aussi, voulez-vous vraiment des enregistrements où 't1.val1! = T3.val1 ou t2.val2! = T4.val2' (mais' t1.id = t3.id')? L'ET exige que les deux valeurs soient différentes (si une seule est différente, les données ne seront pas sélectionnées); l'OR signifie que si 'val1' ou 'val3' est différent, les données seront sélectionnées. –