-
selection en sql
Bonjour,,tout le monde
comment peut on selectionner les noms et les salaires sans redondance .
par exp:
SMITH 5000
CLERCK 5000
ALEN 2000 alors dans ce cas j'affiche SMITH 5000
ALEN 2000
j'ai fait ca
cursor cursor_emp is select distinct sal from emp x
where ename in(select ename from emp y where x.sal =y.sal)
order by sal desc;
mais ce que je veux moi c les ename et les salaires
-
Bonjour,
Il faut savoir que SQL est un langage qui part d'une relation matérialisée (table) que l'on spécifie dans la clause FROM et retourne aussi une relation (c'est pas par hazard que SQL est un langage de gestion de BD relationnelles).
On peut comprendre par relation, que les valeurs des colonnes qui constituent une ligne aient une relation logique. Dans ton exemple, (SMITH, 5000), la relation est simple: le salaire de SMITH est 5000.
Donc on ne peut demander à SQL de nous afficher une relation insignifiante... ce que tu demandes à ce que j'ai compris. Dans ton résultat, quelle est la relation entre SMITH et 5000? pourquoi ne pas afficher CLARK 5000 au lieu de SMITH 5000? en d'autres termes, tu as employés ayant le même salaire (SMITH et CLARK), pourquoi tu veux afficher SMITH et non CLARK ????
Donc ce que tu peux faire, c'est ou bien l'affichage des salaires distincts:
SELECT DISTINCT sal FROM emp;
ou les ename distincts... et ils le sont logiquement !
SELECT DISTINCT ename FROM emp;
Tu peux aussi afficher les couples (ENAME, SAL) distincts, mais ils le sont de nature puisque ENAME est logiquement UNIQUE:
SELECT DISTINCT ename,sal FROM emp;