probleme jointure de non equivalence

Illuvatar
Invité n'ayant pas de compte PHPfrance

05 sept. 2007, 15:38

Bonjour,

j'ai un problème dans la composition d'une requète SQL:

Je souhaiterais sélectionner toutes les valeurs d'une table1, dont les entrées de la colonne 'id' sont différentes des entrées de la colonne 'objid' d'une table2. (avec une ou deux clause WHERE en bonus...).

Le principe ne semble pas compliqué pourtant, j'ai beau essayer des jointures de non équivalence, des sous-requètes... je n'arrive pas a avoir ces entrées. je ne comprends pas....

Auriez vous une piste a suivre svp?

Exemple
SELECT DISTINCT o.id
FROM obj_spe o,
	 spe_result r
WHERE o.matiere=$id AND r.objid != o.id AND o.type != 'T'
cette requète me renvoie toutes les entrées de la table1 (o), donc ce n'est clairement pas la bonne méthode mais je bloque....

ViPHP
ViPHP | 1024 Messages

05 sept. 2007, 16:44

un truc genre :

Code : Tout sélectionner

SELECT table1.id FROM table1 LEFT JOIN table2 ON table1.id = table2.objid WHERE table2.objid IS NULL
A+

Pascal

Illuvatar
Invité n'ayant pas de compte PHPfrance

05 sept. 2007, 21:33

yes ca marche!

Merci beaucoup pascaltje!! :D

je marque le topic en résolu (si je pex en invité)
Mais pourrais tu m'expliquer pourquoi, je ne comprends pas trop la requète (ce qui est dommage parce que c'est cool de comprendre)

ViPHP
ViPHP | 1024 Messages

06 sept. 2007, 08:52

en gros on a :
_ les lignes de table2, reliées à table1 grâce à la jointure sur les id
_ on a toutes les lignes de table1 :
_ celles avec une correspondance dans table2
_ celles sans correspondance dans table2

les lignes sans correspondance dans table2 ont table2.objid à NULL .

Voila!

A+

Pascal

Illuvatar
Invité n'ayant pas de compte PHPfrance

06 sept. 2007, 12:44

ok merci beaucoup c cool! a +