IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

[SQL] Dataset en SQL conditionné


Sujet :

MS SQL Server

  1. #1
    Membre éclairé
    Avatar de Reskibil
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 561
    Points : 815
    Points
    815
    Par défaut [SQL] Dataset en SQL conditionné
    Bonjour,

    Bon alors j'ai un petit soucis tout bête (surement) mais que j'arrive pas à résoudre.

    En fait, j'ai 2 requête SQL à mettre dans un dataset et en fonction du résultat d'une 3e requête, on prend l'une des 2.

    Donc en gros,

    SI :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT 
    [FlagAllCountry]
      FROM [User].[dbo].[AWI User security]
    where  rtrim([User Profile])=@user
    order by  [Country Name]
    ='Y'

    ALORS :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Select [Country Name] from [Proposal Dashboard AK100] t01 inner join [Dim Currency] t02 on t01.[Country Code] = t02.[Country Code]
    where t01. [country Code]<> null 
    or t01.[country Code]<> ''
    group by [country Name]
    order by [country Name]
    SINON
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Select [Country Name] from [Proposal Dashboard AK100] t01 inner join [Dim Currency] t02 on t01.[Country Code] = t02.[Country Code]
    where t01. [country Code]<> null 
    or t01.[country Code]<> ''
    and [Country Name] in (
    SELECT 
    rtrim([User Country Name]) as [Country Name]
    FROM [User].[dbo].[AWI User security]
    where  rtrim([User Profile])=@user)
    group by [country Name]
    order by [country Name]
    Je suis sur que ca doit etre tout bete mais là j'avoue que je seche un peu.

    Merci d'avance.

  2. #2
    Membre averti Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Points : 341
    Points
    341
    Par défaut
    Tu veux pas le faire en une seule requête avec un case ou un if?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    IF (SELECT [FlagAllCountry]
                 FROM [User].[dbo].[AWI User security]
                 WHERE  rtrim([User Profile])=@user)='Y'
     
                 SELECT [Country Name] 
                 FROM [Proposal Dashboard AK100] t01 
                 INNER JOIN [Dim Currency] t02 ON t01.[Country Code] = t02.[Country Code]
                 WHERE t01. [country Code]<> NULL
                 OR t01.[country Code]<> ''
                 GROUP BY [country Name]
                 ORDER BY [country Name]
     
    ELSE
     
                 SELECT [Country Name] 
                 FROM [Proposal Dashboard AK100] t01 
                 INNER JOIN [Dim Currency] t02 ON t01.[Country Code] = t02.[Country Code]
                 WHERE t01. [country Code]<> NULL 
                 OR t01.[country Code]<> ''
                 AND [Country Name] IN (SELECT rtrim([User Country Name]) AS [Country Name]
                                                  FROM [User].[dbo].[AWI User security]
                                                  WHERE  rtrim([User Profile])=@user)
                 GROUP BY [country Name]
                 ORDER BY [country Name]
    mais ça ne fonctionne peut être que dans les procédures stockées le if

  3. #3
    Membre averti Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Points : 341
    Points
    341
    Par défaut
    Et au fait cette requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT 
    [FlagAllCountry]
      FROM [User].[dbo].[AWI User security]
    WHERE  rtrim([User Profile])=@user
    ORDER BY  [Country Name]
    elle ne te retourne qu'un enregistrement ?
    si oui pourquoi le order by ? si non, ça va poser problème sur la comparaison avec le 'Y'

  4. #4
    Membre éclairé
    Avatar de Reskibil
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 561
    Points : 815
    Points
    815
    Par défaut
    Petite erreur de ma part. Oubliez le order by, il vient d'une autre requete.

    En fait cette requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT 
    [FlagAllCountry]
      FROM [User].[dbo].[AWI User security]
    WHERE  rtrim([User Profile])=@user
    Ne retourne qu'un seul enregistrement quand ca donne Y, sinon plusieurs mais ce sera jamais Y alors.

    Et oui, l'idée serait d'avoir tout ca dans une seule requete car dans un seul dataset de rapport.

    On vient de me parler de IF ... BEGIN etc... Je vais tester ca.

  5. #5
    Membre averti Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Points : 341
    Points
    341
    Par défaut
    Citation Envoyé par Reskibil Voir le message
    On vient de me parler de IF ... BEGIN etc... Je vais tester ca.
    Regarde deux posts plus haut je t'ai mis un exemple

  6. #6
    Membre éclairé
    Avatar de Reskibil
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 561
    Points : 815
    Points
    815
    Par défaut
    Oup desolé j'avais pas vu.

    En fait j'ai fait ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    IF
    (SELECT MIN([FlagAllCountry])  FROM [User].[dbo].[AWI User security] where  rtrim([User Profile])=@user) = 'Y'
    BEGIN
    Select [Country Name] from [Proposal Dashboard AK100] t01 inner join [Dim Currency] t02 on t01.[Country Code] = t02.[Country Code]
    where t01. [country Code]<> null 
    or t01.[country Code]<> ''
    group by [country Name]
    order by [country Name]
    END
     
    ELSE
    BEGIN
    Select [Country Name] from [Proposal Dashboard AK100] t01 inner join [Dim Currency] t02 on t01.[Country Code] = t02.[Country Code]
    where t01. [country Code]<> null 
    or t01.[country Code]<> ''
    and [Country Name] in (
    SELECT 
    rtrim([User Country Name]) as [Country Name]
    FROM [User].[dbo].[AWI User security]
    where  rtrim([User Profile])=@user)
    group by [country Name]
    order by [country Name]
    END
    Et ca marche nickel.

    Merci

    Edit : Sans les BEGIN/END, ca marche egalement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. DataSet To SQL Table
    Par mariche dans le forum C#
    Réponses: 8
    Dernier message: 12/05/2011, 14h44
  2. Réponses: 0
    Dernier message: 18/02/2011, 22h48
  3. Conseil SQL + DataSet + Liaison
    Par Flopp dans le forum C#
    Réponses: 1
    Dernier message: 14/02/2011, 16h02
  4. Copy DataSet to Sql database
    Par gamisne dans le forum C#
    Réponses: 18
    Dernier message: 09/09/2008, 16h07
  5. actualisation des dataset en sql server reporting services
    Par fayoub dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 22/08/2007, 14h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo