Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problemes classiques SQL

Sujet résolu
6 avril 2011 à 23:01:43

Bonjour bonjour,
Alors voila j'ai un soucis pour realiser un exercice et j'ai donc besoin de votre aide.
Je vais illustrer mon probleme avec un tableau, ca me parait beaucoup plus simple qu'avec des mots.
Supposons que j'ai une table (appelons la "test1") de cette forme:

col1 | col2
Jean | 0
John | 0
John | 1
John | 2
John | 3
Julie | 2
Alex | 3

et mon but est d'afficher (avec un SELECT col1 FROM....) seulement les noms des personnes (en col1) auxquelles il est associé tous les numeros (en col2, ici on n'a que 0,1,2,3). Et donc dans mon exemple, on n'afficherait que John.

Dans le meme style, supposons maintenant la table (test2):

col1 | col2
Jean | 0
Jean | 0
John | 1
John | 1
John | 2
Alex | 2
Alex | 3
Julie | 2
Julie | 3

Cette fois je veux les noms des personnes auxquelles on associe un seul nombre (soit 0 sur chaque ligne ou est presente la meme personne, soit 1 soit 2 soit 3). Ce qui donne dans mon exemple => Jean (mais il peut y en avoir plusieurs).

Voila voila, ca ne devrait pas poser de problemes aux habitués de SQL, j'espere surtout que je suis assez clair.

Merci d'avance.
  • Partager sur Facebook
  • Partager sur Twitter
10 avril 2011 à 10:14:38

Re Bonjour,
Je me permet de faire remonter ce message parce que je n'ai malheureusement toujours pas trouver comment résoudre mon problème...
Personne ne sait faire ce genre de chose? (j'en doute très très fort) Ou alors j'ai peut être mal expliqué ce que je cherche a faire? Je peux essayer de mieux expliquer si il le faut.

A plus.


  • Partager sur Facebook
  • Partager sur Twitter
10 avril 2011 à 19:24:53

Une solution par forcément élégante au premier problème:

SELECT col1 FROM test1
GROUP BY col1
HAVING COUNT(DISTINCT col2) = (SELECT COUNT(DISTINCT col2) FROM test1);


Pour la seconde:

SELECT col1, col2 FROM test2 t1
WHERE NOT EXISTS (SELECT * FROM test2 t2 WHERE t1.col1 = t2.col1 AND t1.col2 <> t2.col2);


Juste pour info, le deuxième exercice correspond en fait à vérifier qu'une clé sur col1 n'est pas violée :)

Bonne journée !

Shepard
  • Partager sur Facebook
  • Partager sur Twitter
10 avril 2011 à 19:51:02

Merci Shepard, je viens de tester ca et c'est parfait!
Une petite explication en bonus pour l'exo 2 ;)
Que dire de plus... Parfait.
Encore merci.
  • Partager sur Facebook
  • Partager sur Twitter