J'ai deux tables qui contiennent des informations transactionnelles. Il y aura beaucoup d'enregistrements par user_id
dans chaque table. Table1 et Table2 ont une relation un-à-un les uns avec les autres. Je veux extraire des enregistrements des deux tables, mais je souhaite exclure les enregistrements qui ont certaines valeurs dans les deux tables. Peu m'importe si les deux n'ont pas ces valeurs, ou si une seule le fait, mais les deux tables ne devraient pas avoir les deux valeurs.Exclure les résultats où deux champs ne possèdent pas certaines valeurs
Par exemple:
SELECT t1.id, t1.type, t2.name
FROM table1 t1
INNER JOIN table2 t2 ON table.xid = table2.id
WHERE t1.user_id = 100
AND (t1.type != 'FOO' AND t2.name != 'BAR')
Alors t1.type
est de type ENUM
avec environ 10 options différentes, et t2.name
est de type également ENUM
avec 2 options.
Mes résultats attendus chercheraient un peu comme:
1, FOO, YUM
2, BOO, BAR
3, BOO, YUM
Mais au contraire, tout ce que je reçois est:
3, BOO, YUM
Il semble filtrer tous les enregistrements qui a « FOO » comme le type, et «BAR» comme nom.
(Nous utilisons MySQL 5.1 ...)
Votre requête me semble bonne - pouvez-vous inclure un vidage rapide des données de votre table. Peut-être y a-t-il quelque chose qui vous manque (par exemple, êtes-vous sûr qu'ils ont tous «t1.user_id = 100»?). –
@Dominic Rodger: Je suis en désaccord respectueusement - voir ma réponse :) –