Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
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 01/02/2011, 13h15   #1
Membre actif
 
Homme
Inscription : septembre 2009
Messages : 167
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : septembre 2009
Messages : 167
Points : 162
Points : 162
Par défaut Requete avec condition?

Bonjour à tous,

J'aimerais faire une requête qui inclut une condition.
A savoir, j'ai plusieurs tables dont une sur laquelle je veux récupérer des infos si elles sont présentes et si ce n'est pas le cas, juste récupérer des infos d'une autre table..

voici plus ou moins ce que je voudrais faire:

Code :
1
2
3
4
5
6
7
8
IF ((SELECT COUNT(*) FROM FDS WHERE ID_Article = @idarticle) > 0)
{
	SELECT Article.*, Risque.CMR, FDS.Lien_FDS FROM Article INNER JOIN Risque ON Article.Code_Risque = Risque.Code_risque INNER JOIN FDS ON Article.ID_Article = FDS.ID_Article WHERE (Article.ID_Article = @idarticle) AND (FDS.Date = (SELECT MAX(Date) FROM FDS WHERE ID_Article = @idarticle))
}
ELSE 
{
	SELECT Article.*, Risque.CMR FROM Article INNER JOIN Risque ON Article.Code_Risque = Risque.Code_risque WHERE Article.ID_Article = @idarticle
}
En gros, je veux pas rentrer dans la deuxième clause de mon where si aucune donnée n'est présente..

Je pense que je devrais faire cela dirrectement dans le code de mon appli, et je pourrais mais j'aurais voulu savoir si c'est faisable directement en SQL. Merci d'avance ^^
papouuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 15h39   #2
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 950
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 950
Points : 17 769
Points : 17 769
Utilisez une jointure esxterne :

Code :
1
2
3
4
5
6
7
8
9
10
SELECT A.*, R.CMR, FDS.Lien_FDS 
FROM   Article AS A 
       INNER JOIN Risque AS R
            ON A.Code_Risque = R.Code_risque 
       LEFT OUTER JOIN FDS 
            ON A.ID_Article = FDS.ID_Article 
               AND (FDS.Date = (SELECT MAX(Date) 
                                FROM   FDS 
                                WHERE  ID_Article = @idarticle))             
WHERE  A.ID_Article = @idarticle
Pour apprendre le SQL, mon site web comme mon bouquin peuvent vous y aider !

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 16h13   #3
Membre actif
 
Homme
Inscription : septembre 2009
Messages : 167
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : septembre 2009
Messages : 167
Points : 162
Points : 162
Super ca marche nickel!

J'avais déjà essayé de bidouiller avec les LEFT OUTER JOIN mais sans résultat..

Et merci pour les infos, à l'avenir j'irais voir directement sur votre site
papouuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h09.


 
 
 
 
Partenaires

Hébergement Web