Jointure entre deux tables [Résolu]

Messages postés
13
Date d'inscription
mardi 6 avril 2010
Dernière intervention
31 octobre 2016
-
Bonjour à tous,
je vais commencer par vous présenter mes deux tables

Crédit
Cod_Client
Montant

ID_Client
Cod_Client
ID
Type_ID
-On a trois types ID
1- Carte identité
2- Passeport
3- Carte séjour

Donc un client peut avoir plus q'une ID dans la table 'ID_Client' mais un seul COD_Client qui est le clé primaire dans la table 'Crédit'.

J'ai crée une vue dont la requête est la suivante:
SELECT
DISTINCT (CASE WHEN (i.Type_ID =1) THEN 'Carte identité'
WHEN (i.Type_ID =2) THEN 'Passeport'
WHEN (i.Type_ID =3) THEN 'Carte séjour'
END ) as [TYPDOC], i.ID as NumID, C.Cod_Client, C.Montant From Credit as C LEFT OUTER JOIN ID_Client i on C.Cod_Client=i.Cod_Client

Mon problème c'est que si le client a plusieurs ID je veut seulement afficher la ligne qui possède l'ID la plus important (1 Plus important que 2 plus important que 3)

ET MERCI D'AVANCE
Afficher la suite 

Votre réponse

1 réponse

Meilleure réponse
Messages postés
4269
Date d'inscription
samedi 8 septembre 2007
Dernière intervention
29 août 2018
1
Merci
salut,

Tu peux simplement rajouter:

 
ORDER BY C.ID
limit 1


Ca triera les résultats en fonction de l id, du plus petit au plus grand, et ne récupèrera que la première entrée.

naga

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

nagaD.scar
Messages postés
4269
Date d'inscription
samedi 8 septembre 2007
Dernière intervention
29 août 2018
-
Ca c 'est en mySQL, en sql la limit sera :


AND rownum=1


Mais il faudra d abord que la requete soit jouée, et donc faire:


SELECT * FROM (
SELECT
DISTINCT (CASE WHEN (i.Type_ID =1) THEN 'Carte identité'
WHEN (i.Type_ID =2) THEN 'Passeport'
WHEN (i.Type_ID =3) THEN 'Carte séjour'
END ) as [TYPDOC], i.ID as NumID, C.Cod_Client, C.Montant From Credit as C LEFT OUTER JOIN ID_Client i on C.Cod_Client=i.Cod_Client ) REQ
WHERE ROWNUM=1
manbiz
Messages postés
13
Date d'inscription
mardi 6 avril 2010
Dernière intervention
31 octobre 2016
-
Merci pour ta réponse
j'ai trouvé la solution
 WITH T AS 
(
SELECT CASE WHEN i.Type_ID =1 THEN 'Carte identité' 
            WHEN i.Type_ID =2 THEN 'Passeport'
		      WHEN i.Type_ID =3 THEN 'Carte séjour' END as TYPDOC,
       i.ID as NumID, C.Cod_Client, C.Montant,
       ROW_NUMBER() OVER(PARTITION BY ID ORDER BY Type_ID) AS N 
From   Credit as C 
       LEFT OUTER JOIN ID_Client i on C.Cod_Client=i.Cod_Client
) 
SELECT * FROM T WHERE N = 1; 


pour Limit 1; j'ai toujours un message d'erreur 'Syntaxe incorrecte vers 'limit'.'
nagaD.scar
Messages postés
4269
Date d'inscription
samedi 8 septembre 2007
Dernière intervention
29 août 2018
-
oui le limit est en mySQL uniquement
Commenter la réponse de nagaD.scar

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.