[Oracle] problème de nvl
Résolu/Fermé
AssassinTourist
Messages postés
5710
Date d'inscription
lundi 16 janvier 2012
Statut
Contributeur
Dernière intervention
29 février 2024
-
21 mai 2012 à 14:42
AssassinTourist Messages postés 5710 Date d'inscription lundi 16 janvier 2012 Statut Contributeur Dernière intervention 29 février 2024 - 22 mai 2012 à 09:45
AssassinTourist Messages postés 5710 Date d'inscription lundi 16 janvier 2012 Statut Contributeur Dernière intervention 29 février 2024 - 22 mai 2012 à 09:45
A voir également:
- Oracle sql nvl
- Sql server recovery - Télécharger - Gestion de données
- Identificateur non valide oracle ✓ - Forum Bases de données
- Logiciel sql - Télécharger - Bases de données
- Requête sql date supérieure à ✓ - Forum Programmation
- Sql replace plusieurs valeurs - Forum Programmation
2 réponses
jee pee
Messages postés
40470
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
23 novembre 2024
9 426
21 mai 2012 à 18:34
21 mai 2012 à 18:34
Salut,
Tu pourrais essayer :
select distinct id, nom from
(select id, nom from table1 where id=id_donne
union
select id, nom from table2 where id=id_donne
)
/
cdlt
Tu pourrais essayer :
select distinct id, nom from
(select id, nom from table1 where id=id_donne
union
select id, nom from table2 where id=id_donne
)
/
cdlt
AssassinTourist
Messages postés
5710
Date d'inscription
lundi 16 janvier 2012
Statut
Contributeur
Dernière intervention
29 février 2024
1 311
22 mai 2012 à 09:45
22 mai 2012 à 09:45
Sinon ça marche nickel, jee pee. Merci beaucoup !
21 mai 2012 à 20:39
Je vais donc tester :
C'est une bonne idée ! Je reviens dire si ça a pu fonctionner dès que je peux.
M'enfin, je ne comprends pas bien alors la fonction NVL :$ et pourquoi elle retourne ces résultats...
Modifié par jee pee le 21/05/2012 à 23:37
NVL est utilisé pour remplacer la valeur d'un champ vide, mais sur un enregistrement existant. Tu sembles l'utiliser sur des champs d'un enregistrement qui n'existerait pas.
En plus sans lien entre les 2 tables ta requête génère un produit cartésien des enregistrements entre table 1 et table 2.
Il y a plusieurs autres façons de faire, pour par exemple supprimer le distinct
select id, nom from table1 where id=id_donne
union
select id, nom from table2 where id=id_donne
and id not in (select id from table1 where id=id_donne )
Modifié par AssassinTourist le 22/05/2012 à 09:19
Mais n'est-il pas mieux de mettre un distinct plutôt que de faire trois select ?
(dans mon cas présent, j'avais mis un distinct parce qu'avec le nvl, il me donnait trop de résultats même lorsque la requête était bonne)