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

Bases de données Delphi Discussion :

Requêtes SQL Delphi


Sujet :

Bases de données Delphi

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 21
    Points : 7
    Points
    7
    Par défaut Requêtes SQL Delphi
    Bonjour
    j'espère ke vs pouvez m'éclairer sur ces questions:
    1) j'ai 3 tables qui contiennent a peu prés les mêmes champs(produits, quantités)
    je voudrais afficher dans l'état delphi les produits des 3 tables sans doublons avec la somme de leurs quantité respectives .
    N.B: je travail sous delphi 5
    2)je voudrai afficher les données du chapms référence dans DB grid mais sans doublon
    comments faire pour éliminer cette répétition
    merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    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 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Nous n'avons pas le Type de Base de Données

    Sinon si tu SGBD le permet il faudrait voir les Vues et l'UNION pour fusionner les tables sous une seule, en MySQL et il y a aussi le Merge ...

    pour éliminer des doublons c'est souvent un DISTINCT sur la clé pour n'avoir qu'une seule ligne, ou alors un Agrégat avec un SUM et un group by
    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

  3. #3
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 21
    Points : 7
    Points
    7
    Par défaut slt
    c bon g trouver la solution
    voilà pour ki sa peut servir

    Select Produit, sum(quantité)
    From Table1, Table2, table3
    Groyup by produit

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    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 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Classique, un Aggrégat avec un SUM et un GROUP BY, comme je l'avais proposé ! Content de t'avoir aidé
    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

  5. #5
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 21
    Points : 7
    Points
    7
    Par défaut tjrs pas résolu
    o fet la solution elle marche mé y tjrs un pblm :
    sa marche seulement si j'ordonne les tables comme ceci table3,table2,table1
    si je change l'ordre des tables la requette ne me sélectionne que les produit qui figure dans la première table
    comment faire
    peut être que ma requêtte elle n'est pas complète
    merci d'avance

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    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 459
    Points : 24 873
    Points
    24 873
    Par défaut
    il manque la jointure (Table1.ID = Table2.ID ???), ou alors une UNION

    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
    (
    Select Produit, sum(quantité)
    From Table1
    Group by produit 
    )
    UNION
    (
    Select Produit, sum(quantité)
    From Table2
    Group by produit 
    )
    UNION
    (
    Select Produit, sum(quantité)
    From Table3
    Group by produit 
    )
    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

  7. #7
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 21
    Points : 7
    Points
    7
    Par défaut d'acc
    ok je vais essayer
    merci
    @+

  8. #8
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 21
    Points : 7
    Points
    7
    Par défaut re
    j'ai essayer avec ta proposition
    en faite je l'ai implanter dans une requêtte sql
    mais quand j'active l'élément Querry
    il ya un message d'erreur qui s'affiche
    "convertion de type incorrecte"
    comment résoudre ce tracas
    thank's

  9. #9
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 21
    Points : 7
    Points
    7
    Par défaut slt
    au fait pour êter bien explicite
    le message d'errur est le suivant:"utilisation incorrecte du mot clé : ("
    et si j'enlève les "(" un autre message s'affiche:"différence de type dans une expression".
    merci d'avance pour votre aide

  10. #10
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut

    il faudrait faire voir la nouvelle requête qui pose problème.

  11. #11
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    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 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Quelle est la base de Données, supporte-t-elle l'union ?
    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

  12. #12
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 21
    Points : 7
    Points
    7
    Par défaut Bjr
    eh bien oui la base de données est paradox-delphi5
    et elle supporte l'union

  13. #13
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 967
    Points
    6 967
    Par défaut
    Et quelque chose comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    select distinct Produit, QteTotal from (
       Select Produit, sum(quantité) as QteTotal
       From Table1
       Group by produit 
       UNION
       Select Produit, sum(quantité) as QteTotal
       From Table2
       Group by produit 
       UNION
       Select Produit, sum(quantité) as QteTotal
       From Table3
       Group by produit 
    )
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  14. #14
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    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 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Paradox, est cela me semble difficile pour l'union, je ne l'ai jamais utilisé dessus ...

    sinon Lung, l'UNION doit renvoyer un seul DataSet, c'est le but ...
    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

  15. #15
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 21
    Points : 7
    Points
    7
    Par défaut bonjour
    eh bien j'ai essayer avec la nouvelle requêtte de Lung mais au moment où j'active mon Query il s'arrête à la première ligne et un message d'erreur s'affiche : "utilisation incorecte du mot clé select"

  16. #16
    Membre confirmé Avatar de TryExceptEnd
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 501
    Points : 574
    Points
    574
    Par défaut
    Paradox ne supportant pas les sous requêtes, il faut créer un fichier texte contenant la requête d'union :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT produit,quantité
    FROM Table1
    UNION
    SELECT produit,quantité
    FROM Table2
    UNION
    SELECT produit,quantité
    FROM Table3
    Ce fichier est a enregister sous un nom quelconque dans le même dossier où se trouvent les fichiers tables paradox et avec l'extention ".sql" , disons "LesTables.sql".
    Puis dans un TQuery, tu met la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT produit, SUM(quantité)
    FROM "LesTables.sql"
    GROUP BY Produit
    Et tu auras tes résultats.
    Si vous êtes libre, choisissez le Logiciel Libre.

  17. #17
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    202
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 202
    Points : 108
    Points
    108
    Par défaut
    Citation Envoyé par TryExceptEnd Voir le message
    Paradox ne supportant pas les sous requêtes, il faut créer un fichier texte contenant la requête d'union :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT produit,quantité
    FROM Table1
    UNION
    SELECT produit,quantité
    FROM Table2
    UNION
    SELECT produit,quantité
    FROM Table3
    Ce fichier est a enregister sous un nom quelconque dans le même dossier où se trouvent les fichiers tables paradox et avec l'extention ".sql" , disons "LesTables.sql".
    Puis dans un TQuery, tu met la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT produit, SUM(quantité)
    FROM "LesTables.sql"
    GROUP BY Produit
    Et tu auras tes résultats.
    Qui a dit que Paradox ne supporte pas la cluase union?

    Moi je l'ai fait plusieurs fois sous delphi 5 et 7

  18. #18
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 21
    Points : 7
    Points
    7
    Par défaut bonjour
    j'ai essayer avec la dernière proposition du fichier SQL mais il ya 1 message d'errur au moment où j'acrtive mon querry :"Différence de type dans une expression"
    qu'est ce que ça peut être..................?
    Merci

  19. #19
    Membre confirmé Avatar de TryExceptEnd
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 501
    Points : 574
    Points
    574
    Par défaut
    Vérifie que les champs "Produit" et "Quantité" ont le même type de valeur sur les trois tables.
    Tu peux faire des essais sur la ces requetes avec l'Expolorateur SQL de Delphi pour trouver ou ça cloche.
    Si vous êtes libre, choisissez le Logiciel Libre.

  20. #20
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 21
    Points : 7
    Points
    7
    Par défaut ça marche tjrs pas
    j'ai vérifier ils ont le même type dans les trois tables
    .......?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Delphi 7] Requête SQL
    Par Hurin dans le forum Bases de données
    Réponses: 2
    Dernier message: 06/07/2008, 10h23
  2. Requête sql avec mysql sous delphi
    Par colfire_dev dans le forum Bases de données
    Réponses: 37
    Dernier message: 07/01/2008, 10h56
  3. Requête SQL : Jointure sur 3 tables - Bd Access 1997 & Delphi 7
    Par Didier100 dans le forum Bases de données
    Réponses: 2
    Dernier message: 28/12/2007, 09h57
  4. problème de syntaxe delphi pour une requête sql
    Par socooooool dans le forum Bases de données
    Réponses: 12
    Dernier message: 07/07/2006, 16h53

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