Précédent   Forum du club des développeurs et IT Pro > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 08/01/2013, 13h48   #1
Lili_ évol
 
Femme
Inscription : octobre 2012
Messages : 10
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations forums :
Inscription : octobre 2012
Messages : 10
Points : -1
Points : -1
Par défaut Sélection des tables

Bonjour,

Y aurait il quelqu'un pour m'aider sur SQL?

J'ai 3 tables, je souhaiterais extraire un champ des trois, c'est à dire extraire la valeur de la table A, puis de la table B et dans la table C extraire ce même champ ayant une valeur différente de A et B.

A + B + C (mais que les valeurs différentes de A + B).

Si la valeur retournée est rattachée à plusieurs noms (un autre champ), ne ramener que le premier nom.

Merci d'avance
Lili_ évol est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2013, 14h17   #2
punkoff
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 2 161
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 2 161
Points : 3 494
Points : 3 494
bonjour,

un petit exemple de donnée en entrée et en sortie du process aiderait à comprendre.
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2013, 14h27   #3
Lili_ évol
 
Femme
Inscription : octobre 2012
Messages : 10
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations forums :
Inscription : octobre 2012
Messages : 10
Points : -1
Points : -1
Par défaut Donnees test

ok

table A
nom prenom
titi tutu

table B
nom prenom
titi tutu
tata toto

table C
nom prenom
tata toto
Lili_ évol est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2013, 15h14   #4
punkoff
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 2 161
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 2 161
Points : 3 494
Points : 3 494
et du coup ?

Le résultat attendu ? indiquez dans ce résultat la provenance des tables de chaque ligne
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2013, 15h20   #5
Lili_ évol
 
Femme
Inscription : octobre 2012
Messages : 10
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations forums :
Inscription : octobre 2012
Messages : 10
Points : -1
Points : -1
Par défaut Reponse

Rentourner toutes les lignes sans doublons.
et si le meme nom est associé à differents prénoms, ne renvoyez que le premier prénom.
Lili_ évol est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2013, 15h44   #6
punkoff
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 2 161
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 2 161
Points : 3 494
Points : 3 494
Je ne comprend pas bien l'idée fonctionnelle sous-jacente mais soit

Quelque chose dans le genre devrait fonctionner :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
WITH tmp AS (
SELECT NOM, PRENOM
FROM TABLEA
UNION ALL
SELECT NOM, PRENOM
FROM TABLEB
UNION ALL
SELECT NOM, PRENOM
FROM TABLEC)
 
SELECT NOM, MIN(PRENOM)
FROM tmp
GROUP BY nom
le prenom retenu est aléatoire.

Si vous voulez un ordre de priorité entre vos tables il faudra surement passer par une fonction de fenêtrage ou équivalent .. indiquez votre SGBD le cas échéant.
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2013, 15h57   #7
Lili_ évol
 
Femme
Inscription : octobre 2012
Messages : 10
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations forums :
Inscription : octobre 2012
Messages : 10
Points : -1
Points : -1
Merci pour cette solution.

J'utilise DB2. La fonction min ne me ramène pas l'une des valeurs en sortie.
Lili_ évol est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2013, 20h49   #8
punkoff
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 2 161
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 2 161
Points : 3 494
Points : 3 494
Pas possible

Pour vous rafraichir la mémoire suivez ce cours : http://sqlpro.developpez.com/cours/sqlaz/ensembles/

Si le résultat diffère de ce que vous attendez c'est que :
- vos données sont différente de ce que vous nous avez présenté.
- vous avez mal exposé votre besoin

Indiquez la requête que vous exécuté ainsi qu'un jeu de donné exhaustif qui représente votre cas (entré/sortie)

PS: ibm dispose de 3 bdd distinct qui évolues pas mal avec les versions, donc indiquer seulement db2 n'est pas suffisant si vous voulez une orientation plus spécifique à votre SGBD
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 01h41.


 
 
 
 
Partenaires

Hébergement Web