Lister les éléments d'une table qui ne sont pas dans une autre

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Lister les éléments d'une table qui ne sont pas dans une autre

par Sékiltoyai » 28 juil. 2007, 00:45

UNION ne sert que très peu. Il sert pour des cas très spéciaux. Ce qui sert le plus, ce sont les jointures et les sous-requètes...

par mike1155 » 27 juil. 2007, 22:51

OK merci beaucoup, je reviendrai peut-être plus tard car j'ai une troisième table avec laquelle je dois travailler mais je cherche un peu avec cet Union.

Merci beaucoup

par Sékiltoyai » 27 juil. 2007, 22:35

En fait, je partais du principe que ta relation entre les deux utilisateurs était comutative (c'est à dire que si ta relation, c'est ->, alors utilisateur1 -> utilisateur2 équivaut à utilisateur2 -> utilisateur1). Dans ce cas, il fallait prendre en compte les cas où abc est dans le premier champ, et celui où abc est dans le second champ, en faisant l'union des requètes cherchant le premier champ là où abc est dans le second et le second champ là où abc est dans le premier.
Mais apparemment, ca ne semble pas être le cas, il suffit donc juste de ne prendre que la requète qui t'intéresse dans les deux sous-requètes unies avec UNION.

par mike1155 » 27 juil. 2007, 22:08

Merci beaucoup, ca fonctionne mais quel est le rôle exact de UNION et pourquoi, j'ai essayé ceci et il me semble que cela marche

Code : Tout sélectionner

SELECT login FROM utilisateurs WHERE login NOT IN(SELECT vers FROM partage_visual WHERE de='abc')
Merci en tout cas

par Sékiltoyai » 27 juil. 2007, 21:18

Un truc comme ca peut être :

Code : Tout sélectionner

SELECT nom FROM utilisateurs WHERE nom NOT IN( SELECT nom1 FROM partage WHERE nom2='abc' UNION SELECT nom2 FROM partage WHERE nom1='abc' )

Lister les éléments d'une table qui ne sont pas dans une aut

par mike1155 » 27 juil. 2007, 19:42

Bonjour, j'ai un petit soucis pour formuler une requête.
J'ai deux tables:

Code : Tout sélectionner

CREATE TABLE `utilisateurs` ( `login` varchar(12) NOT NULL default '', PRIMARY KEY (`login`) );
et

Code : Tout sélectionner

CREATE TABLE `partage_visual` ( `de` varchar(100) NOT NULL default '', `vers` varchar(100) NOT NULL default '' );
Voilà ce que je veux faire, pour un utilisateur donné 'abc', trouver tous les élements de la 1ère table, qui n'apparaissent pas dans la seconde dans le champ 'vers' quand le champ de='abc'

ex: 1ère table:
login
abc
moi
lui
toi
2ème table:
de | vers
abc|moi
abc|lui
moi|lui
toi|moi
je voudrais donc pour l'utilisateur 'abc' obtenir tous les membres sauf 'moi' et 'lui' puisqu'ils apparaissent dans la seconde table en face de abc...

Merci de votre aide, j'espère que le problème est assez compréhensible :)