|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Invité régulier
![]() Inscription : octobre 2010 Messages : 35 ![]() |
Bonsoir j’ai deux requêtes SQL sur les quelles je bloque
1/ j’ai trois tables comme suit : Tab1 (ID1, Nom1, Prenom1) Tab2 (ID2, Prenom2, Date_Naissance, Sex) Tab3 (ID3, Nom3, Adresse, Sex) ![]() Je veux avoir Tab4 (ID4, Nom1, Prenom1, Date_Naissance, Adresse) J’ai essayé ça mais je ne suis pas sur de mon coup Code :
Tab5 (ID5, Nom, Prenom, Adresse, Date_MAJ) Code :
Code :
![]()
|
||||||
|
|
00
|
|
|
#2 | |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 638 ![]() |
Bonjour,
Je pense qu'il y a un énorme problème de conception dans votre base. Que fait-on quand 2 personnes ont le même prénom / nom / sexe ? Sinon ça m'a l'air correct si on fait fi du problème initial Citation:
Ensuite retrouvez les enregistrements initiaux avec ceci. |
|
|
|
10
|
|
|
#3 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Bonjour
à quoi correspondent les ID1, 2, 3, 4,... comme le dit punkoff, vous avez un énorme problème avec votre base, il faut donc que vous nous disiez exactement ce qui permet de faire le lien entre les différentes table (si j'en crois votre première requête, vous faite le lien entre la table1 et la table2... grâce au prénom !!! ) et si j'en crois aussi votre exemple avec les doublons, vos ID ne servent a rien, car la même personne aurait des ID différents ! Dites en nous un peu plus sur le contexte (est-ce une base déjà en production, ou êtes-vous en train de développer, quelle est l'origine des données,...), car je crois que vous avez des problèmes a résoudre en amont de celui que vous exposez ici ! |
|
|
00
|
|
|
#4 |
|
Invité régulier
![]() Inscription : octobre 2010 Messages : 35 ![]() |
merci punkoff, aieeeuuuuu,
alors oui la base est toute pourrie ReQ1: les tables n'ont aucun lien entre elles ReQ2: L'ID est issu d'une autre table contrats et vu qu'une personne peut avoir plusieurs contacts à des dates différentes on veut avoir la dernière adresse de la personne @punkoff: je ne vois pas comment faire la sous requête SVP une petite aide merci. je réédite pour répondre à ta question on prend la donnée la plus récente |
|
|
00
|
|
|
#5 | ||
|
Invité régulier
![]() Inscription : octobre 2010 Messages : 35 ![]() |
Merci tous
pour la ReQ 2 j'ai fais celà Code :
c'est ok
|
||
|
|
00
|
|
|
#6 | |||||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Citation:
Mais je pense que vous pouvez faire mieux a partir de cette requete, en remplacant votre sous requete par une pseudo table Code sql :
et en faisant une jointure sur la date (et sur le nom aussi bien sur !) |
|||||
|
|
00
|
|
|
#7 |
|
Invité régulier
![]() Inscription : octobre 2010 Messages : 35 ![]() |
@aieeeuuuuu: UN GRAND MERCI
Mais le In me retourne deux lignes!! (voir mon exemple un peu plus haut) C'est quoi la différence entre les deux méthodes (la mienne et avec pseudo table) Merci. |
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Code sql :
SELECT max (Date_Maj) FROM dbo.TEST_MAX_LOAD Vous renvoie deux lignes ?????? Quel est votre SGBDR, il va peut être falloir songer à en changer... pour ce qui est de la jointure, elle sera plus performante qu'avec une sous requete |
|
|
00
|
|
|
#9 | ||
|
Invité régulier
![]() Inscription : octobre 2010 Messages : 35 ![]() |
Oui elle me retourne deux ligne
Code :
|
||
|
|
00
|
|
|
#10 | ||
![]() ![]() |
Avec SQL-Server 2005 on écrit plutôt comme ceci :
Code :
__________________
Email : http://scr.im/waldar |
||
|
00
|
|
|
#11 | |||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Citation:
Arff, désolé, je n'avais pas vu que le GROUP BY faisait partie de la sous requête, d'ailleurs je ne comprend pas trop son intérêt, car vous filtrez déjà par nom, et s'il vous renvoie plus d'une ligne, c'est que vous avez plusieurs prénoms pour un seul et même nom, vous devriez donc ajouter un Y.prenom = X.Prenom dans la clause WHERE de votre sous requête, sinon vous aurez des résultats erronés... |
|||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com