Demande d'aide sur requête SQL

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RÉGLÉ] Demande d'aide sur requête SQL

    Quel spécialiste du langage SQL pourrait me sortir de ce guêpier ? J'ai beau chercher dans de nombreuses documentations sur SQL, je ne trouve rien qui puisse m'aider.
    Je tente de faire exécuter la requête sql suivante, et je bute sur une erreur de syntaxe n° 1064 qui se situerait en fin de commande, à partir de "where" :

    Code:
    SELECT *, COUNT(*), SUM(`product_subtotal_with_tax`) FROM `e8wgn_virtuemart_order_items`  ORDER BY `virtuemart_product_id` WHERE `created_by` = 522 GROUP BY `virtuemart_product_id`
    Je précise que tous les items déclarés dans cette requête sont bien des constituants de ma table ici utilisée.
    Mon but recherché est d'obtenir un tableau final où chaque ligne regroupera les lignes détails concernant un produit donné (cf. virtuemart_product_id, qui est également un index numérique entier de la table) relevant du seul utilisateur 522.
    Problème assez banal, mais qui me plombe depuis de nombreuses heures !

    Grand merci à vous pour votre aide.
    Dernière édition par Visiteur à 13/12/2016, 14h50

  • #2
    Re : Demande d'aide sur requête SQL

    Bonjour,


    Je n'ai pas virtuemart, j'ai donc recréé la même requête basée sur la table content pour compter le nombre d'article pour l'auteur 36, par catégorie d'article trie sur la catégorie :

    SELECT catid, count(*), COUNT(`title`) FROM `gucl0_content` WHERE `created_by` = 36 GROUP BY `catid` order by catid
    La caluse GROUP BY qui trie et réorganise ta table est assez 'sélective' et très sévère dans l'ordre des paramètres.

    La requête ci-dessus fonctionne parfaitement, inverser l'ordre des clause WHERE et GROUP BY retourne une erreur 1064, il y a donc de bonnes chances que :
    SELECT *, COUNT(*), SUM(`product_subtotal_with_tax`) FROM `e8wgn_virtuemart_order_items` WHERE `created_by` = 522 ORDER BY `virtuemart_product_id` GROUP BY `virtuemart_product_id`
    fonctionne comme tu l'espèrais

    Cordialement
    Il y a 10 sortes de gens. Ceux qui savent compter en binaire et ceux qui ne savent pas ...

    Commentaire


    • #3
      Re : Demande d'aide sur requête SQL

      Bonjour et merci de ton aide PieceOfCake,

      Je viens de tester avec ta requête ainsi réordonnée, mais j'ai toujours la même erreur :

      Code:
      #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP BY `virtuemart_product_id` LIMIT 0, 25' at line 1
      Sacré loup !

      Commentaire


      • #4
        Re : Demande d'aide sur requête SQL

        Peux tu re fournir ta requête SQL ?


        Je te suggère une méthode de mise au point itérative simple et efficace via PHPMyAdmin :
        exécute la requête avec juste le group by puis ajouter la clause where pour finir avec la clause order by.

        PS : As tu essayé la requête que je t'ai mise en exemple sur ta table ##_content ?
        Il y a 10 sortes de gens. Ceux qui savent compter en binaire et ceux qui ne savent pas ...

        Commentaire


        • #5
          Re : Demande d'aide sur requête SQL

          ORDER BY doit en effet toujours être la dernière instruction, si je ne me trompe.
          "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
          MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

          Commentaire


          • #6
            Re : Demande d'aide sur requête SQL

            Et voilà, j'y suis enfin arrivé. Il suffisait d'écrire la requête :

            Code:
            SELECT order_item_name, SUM(product_quantity), SUM(product_subtotal_with_tax) FROM `e8wgn_virtuemart_order_items` WHERE created_by = 523 GROUP BY order_item_name
            Il convient de noter que la clause ORDER BY était surabondante, et se mélangeait les crayons avec la clause GROUP BY. Et l'obligation de retrouver dans les items sélectés au moins l'item placé dans la clause GROUP BY.
            Puissant, mais écriture alambiquée !

            nb : merci, mille fois mercis PieceOfCake, ainsi que RobertG !

            Commentaire

            Annonce

            Réduire
            Aucune annonce pour le moment.

            Partenaire de l'association

            Réduire

            Hébergeur Web PlanetHoster
            Travaille ...
            X