Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/07/2011, 10h45   #1
Candidat au titre de Membre du Club
 
Développeur Web
Inscription : janvier 2011
Messages : 48
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2011
Messages : 48
Points : 13
Points : 13
Par défaut Procédure stockée jointure

Bonjour,
j'ai une table qui contient les colonnes suivantes:

Code :
1
2
TABLE 1
[Id] | [CatalogId] | [Date] | [Lang] | [Country]......
et une autre:

Code :
1
2
TABLE 2
[CatalogId]|[Email]|[Colonne3]....[Colonne]
Le but de ma requête est d'obtenir les 50 lignes les plus récentes de la table 1 mais qui a un email (table2, jointure avec le "catalogId" entre les deux tables) qui est égal a un paramètre de la procédure: @Email.

J'ai tenté avec des Inner join... mais cela n'a pas l'air de fonctionner. Quelqu'un aurait une idée?
Kirua76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2011, 11h51   #2
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 43
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 43
Points : 13
Points : 13
Et quelque chose du genre :

Code :
1
2
3
4
5
6
7
 
SELECT TOP(50) T1.DATE, T2.EMAIL FROM  TABLE 1 T1
 
LEFT OUTER JOIN TABLE 2 T2
ON T1.CATALOGUEID = T2.CATALOGUEID
 
ORDER BY T1.DATE DESC
guilld est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2011, 12h07   #3
Candidat au titre de Membre du Club
 
Développeur Web
Inscription : janvier 2011
Messages : 48
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2011
Messages : 48
Points : 13
Points : 13
Merci de ta réponse, mais elle n'est pas bonne malheuresement .

Car cela doit être les 50 plus récentes lignes de la tables T1 mais qui ont l'email(de la tablt T2) égal à l'attribut @Email.

La, ta requête va me retourner les 50 plus récentes lignes de la table t1 en affichant juste la date et l'email. Moi je souhaite avoir toutes les informations de la table t1, les 50 plus récentes, mais dont l'email de t2 est égal a @Email (la jointure se fait effectivement je pense par le catalogId de t1 et t2).

Désolé si je n'avais pas été assez précis précédemment.

Merci d'avance.
Kirua76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/07/2011, 10h28   #4
Candidat au titre de Membre du Club
 
Inscription : janvier 2009
Messages : 14
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 14
Points : 14
Points : 14
La requète etait presque la bonne

Avec tes compléments cela donne

Code :
1
2
3
4
5
 
SELECT TOP(50) T1.DATE, T1.EMAIL FROM  TABLE 1 T1
 
INNER JOIN TABLE 2 T2 ON T1.CATALOGUEID = T2.CATALOGUEID AND T1.EMAIL = T2.EMAIL
ORDER BY T1.DATE DESC
michaud_fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2011, 10h30   #5
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Architecte de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2004
Messages : 1 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
Attention au JOIN qui 'dupliquera' vos lignes si vous avez 2 lignes dans table 2 répondant au critère de la jointure...

Passez par un EXISTS...
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h50.


 
 
 
 
Partenaires

Hébergement Web