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

Requêtes et SQL. Discussion :

query avec condition if


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    446
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2006
    Messages : 446
    Points : 89
    Points
    89
    Par défaut query avec condition if
    Bonjour a tous. moi j'ai une table avec comme champs : idcommande, idproduit, idclient, qte, prixunitaire, paye, datecommande

    moi je voudrais creer une query qui permet de creer deux champs avec ces conditions:
    si le idproduit commence par 'A' alors (qte*prixunitaire)as prix_bar
    si le idproduit commence par 'C' alors (qte*prixunitaire)as prixSS


    merci beaucoup.

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 029
    Points : 24 584
    Points
    24 584
    Par défaut
    Bonjour,

    La fonction iif() permet de faire des choix conditionnel.

    Pour repérer la première lettre 2 possibilités sont possibles.

    Utiliser un Left(champ,1)="A" ou un Produit Like "A*"

    Regarde dans l'aide comment utiliser le IIf()



    Cordialement,

  3. #3
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    446
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2006
    Messages : 446
    Points : 89
    Points
    89
    Par défaut
    Moi j'ai fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Uscite.DataVendita, Uscite.IDContatto, ([Clienti].[Nome]+' '+[Clienti].[Cognome]) AS Nome, ([Uscite].[ID_Art]+' '+[Articoli].[Descrizione]) AS Art,  Sum(Uscite.Quantità) AS Qtà, Sum(Uscite.PrezzoUnitario) AS PrezzoUnitario, Sum(([Uscite].[Quantità]*[Uscite].[PrezzoUnitario])) AS Totale, Sum(Uscite.Totale) AS SommaDiTotale, Uscite.Pagato
    FROM Clienti INNER JOIN (Articoli INNER JOIN Uscite ON Articoli.ID_Art = Uscite.ID_Art) ON Clienti.IDContatto = Uscite.IDContatto
    GROUP BY Uscite.DataVendita, Uscite.IDContatto, ([Uscite].[ID_Art]+' '+[Articoli].[Descrizione]), Uscite.Pagato, Clienti.Nome, Clienti.Cognome
    HAVING (((Uscite.DataVendita) Between 0 And Date()-1) AND ((Uscite.Pagato)=False));

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select id_Cliente,  id_Art, Sum(Uscite.Quantità) AS Qtà, Sum(Uscite.PrezzoUnitario) AS PrezzoUnitario, Sum(([Uscite].[Quantità]*[Uscite].[PrezzoUnitario])) as Prezzo_Bar
    from Uscite
    where Uscite.ID_Art like 'A%'
     
    select id_Cliente,  id_Art,Sum(Uscite.Quantità) AS Qtà, Sum(Uscite.PrezzoUnitario) AS PrezzoUnitario, Sum(([Uscite].[Quantità]*[Uscite].[PrezzoUnitario])) as Prezzo_SS
    from Uscite
    where Uscite.ID_Art like 'C%'
    comment je fais pour integrer les trois queries afin d'obtenir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Uscite.DataVendita, Uscite.IDContatto, ([Clienti].[Nome]+' '+[Clienti].[Cognome]) AS Nome, ([Uscite].[ID_Art]+' '+[Articoli].[Descrizione]) AS Art,  Sum(Uscite.Quantità) AS Qtà, Sum(Uscite.PrezzoUnitario) AS PrezzoUnitario, Prezzo_Bar, Prezzo_SS, Uscite.Pagato
    FROM Clienti INNER JOIN (Articoli INNER JOIN Uscite ON Articoli.ID_Art = Uscite.ID_Art) ON Clienti.IDContatto = Uscite.IDContatto
    GROUP BY Uscite.DataVendita, Uscite.IDContatto, ([Uscite].[ID_Art]+' '+[Articoli].[Descrizione]), Uscite.Pagato, Clienti.Nome, Clienti.Cognome
    HAVING (((Uscite.DataVendita) Between 0 And Date()-1) AND ((Uscite.Pagato)=False));


    Citation Envoyé par loufab Voir le message
    Bonjour,

    La fonction iif() permet de faire des choix conditionnel.

    Pour repérer la première lettre 2 possibilités sont possibles.

    Utiliser un Left(champ,1)="A" ou un Produit Like "A*"

    Regarde dans l'aide comment utiliser le IIf()



    Cordialement,

  4. #4
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    446
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2006
    Messages : 446
    Points : 89
    Points
    89
    Par défaut
    je suis arrivèe a ressoudre un peu le probleme avec cette query

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Uscite1.DataVendita, Uscite1.IDContatto, ([Nome]+' '+[Cognome]) AS Cliente, IIf(Left(Uscite1.ID_Art,1)='A',uscite1.Quantità*Articoli.Prezzo) AS prezzo_bar, IIf(Left([Uscite1].[ID_Art],1)='C',[uscite1].[Quantità]*[Articoli].[Prezzo]) AS prezzo_ss, ([prezzo_bar]+[prezzo_ss]) AS totale
    FROM Clienti INNER JOIN (Articoli INNER JOIN Uscite1 ON Articoli.ID_Art = Uscite1.ID_Art) ON Clienti.IDContatto = Uscite1.IDContatto
    GROUP BY Uscite1.DataVendita, Uscite1.IDContatto, ([Nome]+' '+[Cognome]), IIf(Left(Uscite1.ID_Art,1)='A',uscite1.Quantità*Articoli.Prezzo), IIf(Left([Uscite1].[ID_Art],1)='C',[uscite1].[Quantità]*[Articoli].[Prezzo]), [prezzo_bar]+[prezzo_ss];
    et j'obtien cette table :

    01/06/09 Franc Merlo 15€ 0 15€
    01/06/09 Franc Merlo 0 30€ 30€

    mais moi je voudrais ça
    01/06/09 Franc Merlo 15€ 30€ 45€

    comment je peux faire?


    Citation Envoyé par Daniela Voir le message
    Moi j'ai fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Uscite.DataVendita, Uscite.IDContatto, ([Clienti].[Nome]+' '+[Clienti].[Cognome]) AS Nome, ([Uscite].[ID_Art]+' '+[Articoli].[Descrizione]) AS Art,  Sum(Uscite.Quantità) AS Qtà, Sum(Uscite.PrezzoUnitario) AS PrezzoUnitario, Sum(([Uscite].[Quantità]*[Uscite].[PrezzoUnitario])) AS Totale, Sum(Uscite.Totale) AS SommaDiTotale, Uscite.Pagato
    FROM Clienti INNER JOIN (Articoli INNER JOIN Uscite ON Articoli.ID_Art = Uscite.ID_Art) ON Clienti.IDContatto = Uscite.IDContatto
    GROUP BY Uscite.DataVendita, Uscite.IDContatto, ([Uscite].[ID_Art]+' '+[Articoli].[Descrizione]), Uscite.Pagato, Clienti.Nome, Clienti.Cognome
    HAVING (((Uscite.DataVendita) Between 0 And Date()-1) AND ((Uscite.Pagato)=False));

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select id_Cliente,  id_Art, Sum(Uscite.Quantità) AS Qtà, Sum(Uscite.PrezzoUnitario) AS PrezzoUnitario, Sum(([Uscite].[Quantità]*[Uscite].[PrezzoUnitario])) as Prezzo_Bar
    from Uscite
    where Uscite.ID_Art like 'A%'
     
    select id_Cliente,  id_Art,Sum(Uscite.Quantità) AS Qtà, Sum(Uscite.PrezzoUnitario) AS PrezzoUnitario, Sum(([Uscite].[Quantità]*[Uscite].[PrezzoUnitario])) as Prezzo_SS
    from Uscite
    where Uscite.ID_Art like 'C%'
    comment je fais pour integrer les trois queries afin d'obtenir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Uscite.DataVendita, Uscite.IDContatto, ([Clienti].[Nome]+' '+[Clienti].[Cognome]) AS Nome, ([Uscite].[ID_Art]+' '+[Articoli].[Descrizione]) AS Art,  Sum(Uscite.Quantità) AS Qtà, Sum(Uscite.PrezzoUnitario) AS PrezzoUnitario, Prezzo_Bar, Prezzo_SS, Uscite.Pagato
    FROM Clienti INNER JOIN (Articoli INNER JOIN Uscite ON Articoli.ID_Art = Uscite.ID_Art) ON Clienti.IDContatto = Uscite.IDContatto
    GROUP BY Uscite.DataVendita, Uscite.IDContatto, ([Uscite].[ID_Art]+' '+[Articoli].[Descrizione]), Uscite.Pagato, Clienti.Nome, Clienti.Cognome
    HAVING (((Uscite.DataVendita) Between 0 And Date()-1) AND ((Uscite.Pagato)=False));

  5. #5
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 029
    Points : 24 584
    Points
    24 584
    Par défaut
    Bonjour,

    Il te faut imbriquer les IIf.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    iif(left(champ,1)="A";prix;iif(left(champ,1)="B";prix;...))
    Il faut un T à la fin de Merlo.

    cordialement,

  6. #6
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    446
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2006
    Messages : 446
    Points : 89
    Points
    89
    Par défaut
    J'ai pas bien compris, tu peux bien m'expliquer s'il te plait?
    Citation Envoyé par loufab Voir le message
    Bonjour,

    Il te faut imbriquer les IIf.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    iif(left(champ,1)="A";prix;iif(left(champ,1)="B";prix;...))
    Il faut un T à la fin de Merlo.

    cordialement,

  7. #7
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 029
    Points : 24 584
    Points
    24 584
    Par défaut
    un truc comme ça.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IIf(Left(Uscite1.ID_Art,1)='A',uscite1.Quantità*Articoli.Prezzo,IIf(Left([Uscite1].[ID_Art],1)='C',[uscite1].[Quantità]*[Articoli].[Prezzo])) AS prezzo_ss,

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

Discussions similaires

  1. [AC-2010] Query SQL VBA (Insert INTO) avec Conditions en variable (Date)
    Par Deustalos dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 12/03/2015, 21h15
  2. query avec condition 'between entre 2 dates'
    Par EtudiantJ2EE dans le forum iReport
    Réponses: 0
    Dernier message: 07/03/2012, 11h18
  3. faire tourner une query avec condition de jour
    Par benvanbelgie dans le forum ODS et reporting
    Réponses: 3
    Dernier message: 19/06/2009, 11h06
  4. Index avec conditions
    Par marhnix dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 29/03/2004, 10h48
  5. boucle avec condition d'arret changeante
    Par NicoH dans le forum Langage
    Réponses: 3
    Dernier message: 10/06/2003, 11h48

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