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

 Delphi Discussion :

MDD.IBQuery.FieldByName('id') où id est commun à plusieurs tables


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de senv33
    Inscrit en
    Janvier 2010
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 53
    Par défaut MDD.IBQuery.FieldByName('id') où id est commun à plusieurs tables
    Bonjour,

    je souhaite récupérer l'id de ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MDD.IBQuery.FieldByName('id')
    mais dans ma requête j'ai plusieurs tables et "id" est commun à deux tables ! aucun problème pour les différencier dans la requête mais comment faire pour les différencier lors de la récupération ?

    Merci d'avance !

  2. #2
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut

    Une requête ne peut renvoyer deux champs possédant le même nom.
    Les id devraient être nommés ID et ID1.

    Mais le plus simple est de donner un alias aux champs de noms ambigus.

    Montre nous ta requête.

    @+ Claudius

  3. #3
    Membre averti Avatar de senv33
    Inscrit en
    Janvier 2010
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 53
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'SELECT a.id FROM algo a, feuille f, calcul c'
                                        +' WHERE a.id=f.num'
                                        +' AND c.id=f.num'
    si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MDD.IBQuery.FieldByName('a.id')
    , ça me mets champ inconnu

  4. #4
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut


    Ton select ne renvoie qu'un seul champ. Donc pas de problème il se nomme ID.

    Pour tes jointures, procède plutôt ainsi:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT 
      A.ID 
    FROM 
      ALGO A
      INNER JOIN FEUILLE F ON A.ID = F.NUM
      INNER JOIN CALCUL C ON C.ID = F.NUM;

    [Edit]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MDD.IBQuery.FieldByName('ID')



    @+

  5. #5
    Membre averti Avatar de senv33
    Inscrit en
    Janvier 2010
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 53
    Par défaut
    ok merci

    sinon pourquoi tes jointures sont mieux ?

  6. #6
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Citation Envoyé par senv33 Voir le message
    sinon pourquoi tes jointures sont mieux ?
    Cette façon de déclarer les jointures dans la clause WHERE est obsolète. L'utilisation de [INNER|OUTER] JOIN est dans la norme SQL actuelle.
    De plus tes requêtes seront très certainement plus optimisées par le serveur IB.

    @+ Claudius

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

Discussions similaires

  1. [AC-2007] Champ Commun à plusieurs tables
    Par bpons dans le forum Modélisation
    Réponses: 4
    Dernier message: 19/05/2010, 08h22
  2. détecter champs communs à plusieurs tables
    Par mick84m dans le forum Requêtes
    Réponses: 2
    Dernier message: 21/06/2006, 14h18
  3. Réponses: 8
    Dernier message: 08/03/2006, 16h12
  4. critère de période commun à plusieurs requete
    Par Nicko29 dans le forum Access
    Réponses: 4
    Dernier message: 26/09/2005, 20h46
  5. Réponses: 5
    Dernier message: 20/09/2005, 22h48

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