Forum Clubic

[SQL] Construction d'une requete

Bonjour à tous,

J’ai besoin d’aide pour la construction d’une requete. J’en ai jamais fait des comme ca…du coup j’ai du mal à faire ce que je veux.

Expliquation :

J’ai 2 tables :

TABLE_A
Affaire_ID
Uti_ID

TABLE_B
Affaire_ID
Uti_ID

Je ne parle que de champ_1 et champ_2 car techniquement je n’ai besoin que de cela pour ma condition WHERE.

Bref vous avez comprit que :

TABLE_A.Affaire_ID = TABLE_B.Affaire_ID
TABLE_A.Uti_ID = TABLE_B.Uti_ID

Jusque la tout va bien, en fait la où ca se corse c’est sur le résultat que je veux.

Condition :

Quand TABLE_A.Affaire_ID = TABLE_B.Affaire_ID

je veux selectionner seulement les Affaire_ID qui sont differents.

Je reformule pour que ce soit plus clair

Pour tous les ID communs de TABLE_A.Affaire_ID = TABLE_B.Affaire_ID alors ne selectionner que les Affaire_ID où TABLE_A.Uti_ID est different de TABLE_B.Uti_ID

En français :
Je ne veux que les numeros d’affaire commun à la table A et B où les utilisateurs sont differents.

En français ca passe mieux…si quelqu’un a une idée ?

Bonjour,
c’est moyen clair, on ne sait pas si dans ton modèle les tables A et B sont en ralation 1-1 1-n ou n-n
On ne sait pas non plus si la clef de la table A et B sont juste AffaireId et uti_id ou juste affaire_id?

Donc selon le cas, c’est soit une bête jointure avec le test uti_id différent, dans le second cas: c’est un jointure “ouverte” avec un groupement de données “group by” pour ne retourner qu’un seul affaire_id.

Edit: pour la jointure ouverte, je suis en Oracle, alors je tente la requête SQL standard de mémoire:

SQL
[color=blue;font-weight:bold]select[/color] a.Affaire_ID from tableA a left join tableB on a.Affaire_ID=b.affaireId and a.uti_id = b.uti_id

where b.uti_id is null
group by a.affaire_id

ça ne rend pas tout à fait ce que tu décrit, la je recherche tout les couples affait_id,uti_id qui n’existent pas dans tableB et je n’affiche que les affaire_id.

cf.
http://www.w3schools.com/sql/sql_join.asp

Saluton,
+1 avec deltree, ton approche est plutôt confuse.
Toutefois je me démarque de deltree quant à l’utilisation d’une clause GROUP BY sans recours à une fonction statistique (SUM, COUNT, AVG,…).
En effet, hors de ce contexte, à de très, très rares exceptions près, l’utilisation de GROUP BY est une aberration.
Ici, par exemple SELECT DISTINCT a.Affaire_ID serait bien mieux approprié.

>Maljuna: tout à fait, je ne m’était jamais posé la question sur la différence entre distinct et group by, je suis plus un codeur, et je ne devrais pas toucher aux requêtes :smiley: