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 éclairé
    Inscrit en
    Septembre 2006
    Messages
    446
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2006
    Messages : 446
    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 121
    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 121
    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,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 446
    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 éclairé
    Inscrit en
    Septembre 2006
    Messages
    446
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2006
    Messages : 446
    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 121
    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 121
    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,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 446
    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 121
    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 121
    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,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

+ 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