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

Syntaxe du sous-requete sous delphi


Sujet :

Langage Delphi

  1. #1
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Septembre 2009
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Syntaxe du sous-requete sous delphi
    Je dispose d’une requête qui s’exécute bien sous MySQL or
    Sous delphi une erreur syntaxique est générée !!!!
    Quelle est l’erreur syntaxique ?



    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
    19
    20
    21
    22
    23
    SELECT  produit_resultat,sum(prix_resutat)
     
    FROM
     
    (SELECT produit as produit_resultat,prix as prix_resutat
    FROM Vente1
     
    UNION ALL
     
    SELECT produit as produit_resultat,prix as prix_resutat
    FROM Vente2
     
    UNION ALL
     
    SELECT produit3 as produit_resultat,prix3 as prix_resutat
    FROM Vente3
     
    UNION ALL
     
    SELECT produit4 as produit_resultat,prix4 as prix_resutat
    FROM Vente4)
     
    GROUP BY  produit_resultat


    merci

  2. #2
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Quelle est l'erreur et quel est le code ?

  3. #3
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Septembre 2009
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    invalide use of Keyword
    token : select
    Line Number : 2

    BDE Error 10770

  4. #4
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Houla...tu passes par le BDE !
    Tu n'as pas d'autre solution ?

  5. #5
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Septembre 2009
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Oui j'utilise le BDE et delphi 7
    Je pense que le problème est au niveau des parenthèses ‘(‘ ‘)‘

    Reste à chercher quelle est la syntaxe

    SELECT …..SELECT

    Supportée par BDE svp ??

    Merci de répondre

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 036
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    uune seule requête par UNION , je ne pense pas que le ALL soit nécessaire

    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
    19
    20
    21
    22
    23
     
    SELECT produit AS produit_resultat,sum(prix) AS prix_resultat
    FROM Vente1
    GROUP BY  produit
     
    UNION  
     
    SELECT produit2 ,sum(prix2)
    FROM Vente2
    GROUP BY  produit2
     
    UNION
     
    SELECT produit3,sum(prix3)
    FROM Vente3
    GROUP BY  produit3
     
     
    UNION
     
    SELECT produit4,sum(prix4)
    FROM Vente4
    GROUP BY  produit4
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  7. #7
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Septembre 2009
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Merci pour la réponse

    Produit1, produit2, produit3, produit4 sont de même type dans toutes les tables

    Je veux faire un cumule global des tables puis un calcul somme(prix) et le GROUP BY produit
    Autrement dit je veux faire Vente1+ Vente2+ Vente3+ Vente4 puis puis un calcul somme(prix) et le GROUP BY

    Dans ta solution il existe des doublons sur produit dans le resultat de ta requete !!!


    Merci

  8. #8
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 036
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    En utilisant le BDE , y a pas trop le choix , les tables temporaires n'existent pas , il faut l'inventer

    Une solution : un batchmove (le seul ++ de BDE ) de la première requête dans un fichier temporaire et un nouveau select sur ce fichier
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  9. #9
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 449
    Points : 24 856
    Points
    24 856
    Par défaut
    Euh, cela fonctionne parfaitement !
    le BDE, en utilisant le Driver ODBC de MySQL, le SQL n'est pas traité par les objets BDE !
    C'est pas une question de support par le BDE mais est-ce que tu utilises bien un alias sur une base MySQL, on dirait une erreur Paradox !
    Parce que là, j'ai un doute, tu ne peux pas tester du SQL sur MySQL si tu n'utilise pas MySQL !
    Si tu veux tester du SQL pour Paradox utilise le Module de Base de Données fournis avec Delphi !

    J'ai un doute sur la question tout simplement par ce que MySQL pour ça renvoie : "Every derived table must have its own alias"
    Bon, comme j'ai pas ta base, j'ai du bricoler d'où l'erreur !


    Si MySQL via BDE
    Tu lance du TQuery de suite, le premier pour la table temporaire le second pour la donnée
    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
    CREATE TEMPORARY TABLE zzz
     
    SELECT produit AS produit_resultat,prix AS prix_resutat
    FROM Vente1
     
    UNION ALL
     
    SELECT produit AS produit_resultat,prix AS prix_resutat
    FROM Vente2
     
    UNION ALL
     
    SELECT produit3 AS produit_resultat,prix3 AS prix_resutat
    FROM Vente3
     
    UNION ALL
    (SELECT produit4 AS produit_resultat,prix4 AS prix_resutat
    FROM Vente4)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT  produit_resultat,sum(prix_resutat)
    FROM zzz 
    GROUP BY  produit_resultat
    Si Paradox via BDE
    Pour les tables temporaires, en fait, tu peux le bidonner en fouillant dans le workdir, netdir ... mais c'est très vilain, car le BDE stocke le résultat dans un fichier que l'on peut accéder ...

    C'est marrant de voir que dès que l'on parle de BDE, on pense Paradox, même si on cherche à nous embrouiller avec du MySQL
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  10. #10
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Septembre 2009
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Merci bien de vos réponses c’est prèsque clair,

    Autre solution trouvée, sauver la sous requête sous requete1.sql

    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
    SELECT produit AS produit_resultat,prix AS prix_resutat
    FROM Vente1
     
    UNION ALL
     
    SELECT produit AS produit_resultat,prix AS prix_resutat
    FROM Vente2
     
    UNION ALL
     
    SELECT produit3 AS produit_resultat,prix3 AS prix_resutat
    FROM Vente3
     
    UNION ALL
    SELECT produit4 AS produit_resultat,prix4 AS prix_resutat
    FROM Vente4

    Puis
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT produit_resultat,sum(prix_resutat)
    FROM "REQUETE1.sql"
    GROUP BY produit_resultat
    Mille merci
    Que c'est compliqué quand on cherche et que c'est simple quand on trouve

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

Discussions similaires

  1. requete - sous requete
    Par kephag dans le forum Requêtes
    Réponses: 1
    Dernier message: 20/01/2013, 21h23
  2. sous requetes sous sql server
    Par momedalhouma dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/01/2012, 09h29
  3. Requete - Sous-requete
    Par Cheeper dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 10/05/2011, 13h22
  4. Pb requete sous requete - NOT IN
    Par Silvia12 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 19/05/2009, 08h34
  5. erreur de syntaxe sous-requête
    Par kenny49 dans le forum Requêtes
    Réponses: 5
    Dernier message: 26/07/2006, 16h10

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