Page 1 sur 1

probleme jointure de non equivalence

Posté : 05 sept. 2007, 15:38
par Illuvatar
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....

Posté : 05 sept. 2007, 16:44
par pascaltje
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

Posté : 05 sept. 2007, 21:33
par Illuvatar
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)

Posté : 06 sept. 2007, 08:52
par pascaltje
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

Posté : 06 sept. 2007, 12:44
par Illuvatar
ok merci beaucoup c cool! a +