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 MySQL Discussion :

Rajouter une rangée à un résultat de requête


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Homme Profil pro
    Responsable R&D
    Inscrit en
    Novembre 2011
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 64
    Points : 43
    Points
    43
    Par défaut Rajouter une rangée à un résultat de requête
    Bonjour,
    je vais essayer de faire simple en simplifiant les tables :
    j'ai une table commandes avec pour colonnes :
    ID_Commande
    ValeurPort
    Valeur_Acompte

    et une table ligne_de_commande avec pour colonnes :
    ID_Ligne_Commande
    ID_Commande
    ID_Produit
    Quantite
    Total

    Vous l'avez sûrement compris, je suis en maître détail où pour chaque ID_Commande je peux avoir plusieurs lignes de commande.

    J'effectue la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT 
      commandes. ID_Commande,
      ligne_de_commande. Quantite,
      ligne_de_commande.Total
    FROM
      ligne_de_commande
      INNER JOIN commandes ON (ligne_de_commande. ID_Commande = commandes. ID_Commande)
    ORDER BY
      commandes. ID_Commande
    et ça marche, ça me donne toutes les lignes de commandes avec en premier l'indice de la commande.
    Maintenant je voudrais faire plus complexe, je voudrais que pour chaque indice de commande, il y ait 2 lignes de résultats en plus,
    une qui comprendrait ID_Commande, 1 (qté) et ValeurPort (pour considérer que le port est une ligne de commande)
    et l'autre ID_Commande, 1 (qté) et Valeur_Acompte (pour considérer que l'acompte est une ligne de commande)

    C'est quelque chose qui est possible en SQL ?
    Merci

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Oui, c'est possible !

    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
     
    SELECT 
      commandes. ID_Commande,
      ligne_de_commande. Quantite,
      ligne_de_commande.Total
    FROM
      ligne_de_commande
      INNER JOIN commandes ON (ligne_de_commande. ID_Commande = commandes. ID_Commande)
    UNION ALL
    SELECT 
      ID_Commande,
      1,
      ValeurPort
    FROM commandes
    UNION ALL
    SELECT 
      ID_Commande,
      1,
      Valeur_Acompte
    FROM commandes
    ORDER BY
      commandes. ID_Commande

  3. #3
    Membre du Club
    Homme Profil pro
    Responsable R&D
    Inscrit en
    Novembre 2011
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 64
    Points : 43
    Points
    43
    Par défaut
    Merci de votre réponse.
    j'ai une erreur au niveau de l'ordre by :
    SQL Error: Unknown column 'commandes.ID_Commande' in 'order clause'
    si je l'enlevé ça passe.
    une idée ?

    ah si je mets ID_Commande tout court ça passe.
    Merci encore

  4. #4
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 705
    Points
    23 705
    Par défaut
    Normal, quand on utilise l'UNION, la clause GROUP BY ne peut être utilisée qu'une seule fois, après la dernière requête, et on ne peut alors utiliser que le nom des colonnes de la première requête (sans alias ou nom de table devant).
    C'est la première requête qui définit le nom des différentes colonnes renvoyées.
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  5. #5
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    En effet, une erreur de copier/coller de ma part : j'ai laissé trainer le nom de la table dans le ORDER BY...

Discussions similaires

  1. Faire une soustraction de résultats de requête
    Par -Neo- dans le forum Langage SQL
    Réponses: 4
    Dernier message: 12/01/2010, 16h51
  2. Comment afficher le rang des résultats d'une requête sous Access 2002
    Par painpepper dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 15/08/2007, 01h19
  3. [SQL] Problème requête sql,rajouter une valeur,checbox
    Par snakejl dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 23/06/2006, 11h18
  4. Réponses: 3
    Dernier message: 07/04/2006, 10h40
  5. Réponses: 47
    Dernier message: 24/10/2005, 09h43

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