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

Langage SQL Discussion :

Erreur de syntaxe requête


Sujet :

Langage SQL

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2013
    Messages : 326
    Points : 156
    Points
    156
    Par défaut Erreur de syntaxe requête
    Bonjour,

    Voici la requête qui présente une erreur de syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $req.='SELECT "'. $equip .'" AS `NomEq`, `ID_indicateur`, `indicateur` 
    FROM `indicateur_"'.$equip.'"` 
    WHERE ID_indicateur IN ("'.$hashFiltre[$equip].'") 
    ORDER BY indicateur ASC';
    $req.=" UNION ";
    Voici le message d'erreur :
    Undefined index: APH_virt in /var/www/html/CQuest_reborn/analyse2.php on line 87 Array ( [0] => HY000 [1] => 1221 [2] => Incorrect usage of UNION and ORDER BY )
    L'erreur ne vient pas des noms de tables / attributs

    Une idée ?

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    bonjour,

    Indiquez la requete sql lancée, sans le code php.

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2013
    Messages : 326
    Points : 156
    Points
    156
    Par défaut
    Sans les balises [code] ?

    $req.='SELECT "'. $equip .'" AS `NomEq`, `ID_indicateur`, `indicateur` FROM `indicateur_"'.$equip.'"` WHERE ID_indicateur IN ("'.$hashFiltre[$equip].'") ORDER BY indicateur ASC';
    $req.=" UNION ";

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    non, la requete sql seule.

    bref pour la syntaxe, qui dépendra de votre sgbd commencez par ici : http://sqlpro.developpez.com/cours/s...nsembles/#L3.1

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2013
    Messages : 326
    Points : 156
    Points
    156
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT nomEquip AS NomEq, ID_indicateur AS indicateur
    FROM indicateur_nomEquip
    WHERE ID_indicateur IN (...)
    ORDER BY indicateur ASC;

  6. #6
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Et comment ton SGBD trouve-t-il un opérateur UNION dans cette requête ?

    Montre nous ce qui est réellement exécuté en demandant à ton programme d'afficher la requête qu'il a préparée juste avant son exécution.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  7. #7
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2013
    Messages : 326
    Points : 156
    Points
    156
    Par défaut
    Code sql : 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
    SELECT "APH_AWS_capa_virt" AS `NomEq`, `ID_indicateur`, `indicateur` 
    FROM `indicateur_"APH_AWS_capa_virt"`
    WHERE ID_indicateur IN ("") 
    ORDER BY indicateur ASC 
     
    UNION 
     
    SELECT "APH_capa_virt" AS `NomEq`, `ID_indicateur`, `indicateur`
    FROM `indicateur_"APH_capa_virt"` 
    WHERE ID_indicateur IN ("") 
    ORDER BY indicateur ASC 
     
    UNION 
     
    SELECT "APH_virt" AS `NomEq`, `ID_indicateur`, `indicateur`
    FROM `indicateur_"APH_virt"` 
    WHERE ID_indicateur IN ("") 
    ORDER BY indicateur ASC

    Voici l'affichage de ma requête

  8. #8
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Comme ça c'est bien plus clair !
    Il ne doit y avoir qu'une seule clause ORDER BY dans une requête, à la fin de celle-ci.
    Il te faut donc supprimer toutes les clauses ORDER BY qui précédent un opérateur UNION.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  9. #9
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2013
    Messages : 326
    Points : 156
    Points
    156
    Par défaut
    Ok j'ai compris. Sauf que pour l'adapter dans mon programme c'est un peu plus compliqué parce que la requête est agrégée à chaque fois dans la boucle.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    foreach ($_SESSION['choix_equipement'] as $equip => $rien)
    				{
    					$i=0;
    					if ($precedent == "")
    					{
    						$precedent=$equip;
    					}
    					#$req.="(SELECT '".$equip."' AS 'NomEq', `ID_indicateur`, `indicateur` FROM `indicateur_".$equip."` GROUP BY `indicateur` ASC)";
    					$req.='SELECT "'. $equip .'" AS `NomEq`, `ID_indicateur`, `indicateur` FROM `indicateur_"'.$equip.'"` WHERE ID_indicateur IN ("'.$hashFiltre[$equip].'")';
    					$req.=" UNION ";
    				}
    				$req = substr($req, 0, -7);?>
    Du coup, je ne sais pas comment faire pour appliquer l'ORDER BY à la requête qui sort... Une petite piste serait la bienvenue :3

    Merci !

  10. #10
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    La logique me semble simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    requete := ""
    tant que (critere) faire
        si (requete != "") 
            requete := requete || " UNION ";
        fin si
        requete := requete || " SELECT ... critere";
    fait
    si (requete != "") 
        requete := requete || " ORDER BY ...";
    fin si
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  11. #11
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2013
    Messages : 326
    Points : 156
    Points
    156
    Par défaut
    Parfait, il n'y a plus ces erreurs !

    Merci !

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

Discussions similaires

  1. Erreur de syntaxe Requête
    Par mesbec dans le forum Access
    Réponses: 1
    Dernier message: 10/07/2013, 14h56
  2. [PDO] erreur de syntaxe requête préparé et condition LIMIT
    Par le nOoB dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/06/2012, 08h50
  3. [AC-2003] Erreur de syntaxe requête UPDATE
    Par hellomom dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 01/05/2009, 13h24
  4. Erreur de syntaxe requête union
    Par Nessie37 dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 19/02/2008, 21h22
  5. [MySQL] Erreurs de syntaxe sur requêtes DELETE
    Par vincedjs dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 06/03/2006, 15h53

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