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 :

Select 2 tables dans différents emplacements


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2006
    Messages : 40
    Points : 31
    Points
    31
    Par défaut Select 2 tables dans différents emplacements
    Bonsoir à tous,

    Depuis quelques jours je me trouve devant un problème SQL, j'ai chercher sur le net mais aucune requête ne semble répondre à mon besoin,
    j'espère trouver quelqu'un qui peut me renseigner la dessus.

    Je développe un outil en Delphi et à l'aide d'un TQuery j'essai d'interroger
    2 tables dbase III qui existes dans 2 chemins différents
    (pour une seule table c'est déjà fait):

    Une Table LigneFact existe dans c:\stock\2008
    et une Table TVA qui existe dans c:\stock

    Je veux faire un seul SELECT qui relie les deux fichiers par le champ CODTVA

    Comment faire SVP ?

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 874
    Points : 53 048
    Points
    53 048
    Billets dans le blog
    6
    Par défaut
    Utilisez le BDE et créez deux alias différent pour chacun des bases (répertoire). Dès lors il ne vous suffit plus que de préfixer les tables par cet alias.
    A +

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2006
    Messages : 40
    Points : 31
    Points
    31
    Par défaut
    Bonjour,

    Merci de votre réponse, le problème est que j'ai pas réussi à mentionner mes deux alias dans la requête SQL pour faire un SELECT avec les deux tables.
    j'obtient toujours un message d'erreur à l'ouverture de mon TQUERY.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2006
    Messages : 40
    Points : 31
    Points
    31
    Par défaut
    Re-bonjour,
    j'ai créer 2 alias dans Administrateur BDE à savoir BDEstk2008 qui pointe vers c:\stock\2008
    et BDEstk qui pointe vers c:\stock
    puis j'ai mis en place deux Tdatabase qui utilisent, chacun, un des Alias
    ainsi je les ai nommé stk et stk2008 enfin dans mon tQuery j'ai tapé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select sum(a.montantht) as total, a.codtva as tva ,
             t.valtva as valtva
    from   stk2008.ligfact a , stk.tva t 
    where (a.nfacture = :nfacture) and (a.codtva=t.codtva)
    GROUP BY a.codtva,t.valtva
    Mais le message d'erreur suivant s'affiche


    Merci de votre aide

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 874
    Points : 53 048
    Points
    53 048
    Billets dans le blog
    6
    Par défaut
    Êtes vous sûr d'utiliser le BDE dans vos dev ???

    A +

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2006
    Messages : 40
    Points : 31
    Points
    31
    Par défaut
    Bonsoir,
    Eh ben oui, Monsieur SQLpro, j'ai utilisé les Alias créer dans le BDE mais il s'est avéré que c'est dans la syntaxe de ma requête que réside mon problème:

    Enfin, grâce à votre conseil d'utiliser le BDE j'ai finis par trouver la solution dans l'aide de Delphi le fameux et j'insère ici l'explication (que j'ai trouvé) pour ceux qui rencontrent le même problème.

    Il s'agit en fait d'une requête hétérogène:
    TQuery supporte les requêtes hétérogènes sur plusieurs types de serveur ou de table (par exemple, des données d'une table Oracle et d'une table Paradox). Quand vous exécutez une requête hétérogène, le BDE analyse et traite la requête en utilisant Local SQL. Pour cette raison, la syntaxe SQL spécifique au serveur et étendue n'est pas supportée.

    Pour effectuer une requête hétérogène, suivez les étapes ci-dessous*:

    1 Définissez des alias BDE distincts pour chaque base de données concernée dans la requête, en utilisant l'outil d'administration BDE ou l'explorateur SQL.
    2 Laissez vide la propriété DatabaseName de TQuery*; les noms des bases de données seront spécifiés dans l'instruction SQL.
    3 Dans la propriété SQL, spécifiez l'instruction SQL à exécuter. Faites-y précéder le nom de chaque table par l'alias BDE de la base de données de cette table, encadré par des caractères deux-points. La référence entière est elle-même encadrée de guillemets.

    4 Définissez les paramètres de la requête dans la propriété Params.
    5 Appelez Prepare pour préparer la requête avant sa première exécution.
    6 Appelez Open ou ExecSQL selon le type de requête que vous exécutez.

    Par exemple, vous définissez un alias nommé Oracle1 pour une base de données Oracle comprenant une table CUSTOMER, et un alias nommé Sybase1 pour une base de données Sybase comprenant une table ORDERS. Une requête simple sur ces deux tables pourrait s'écrire*:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT Customer.CustNo, Orders.OrderNo 
    FROM ":Oracle1:CUSTOMER"
      JOIN ":Sybase1:ORDERS"
        ON (Customer.CustNo = Orders.CustNo)
    WHERE (Customer.CustNo = 1503)
    Dans une requête hétérogène, au lieu de spécifier la base de données à l'aide d'un alias, vous pouvez utiliser un composant TDatabase. Configurez TDatabase afin qu'il pointe sur la base de données, affectez à la propriété TDatabase.DatabaseName une valeur arbitraire mais unique, et utilisez ensuite cette valeur dans l'instruction SQL au lieu d'un nom d'alias BDE.
    Ainsi ma requête devrait s'inscrire de la manière suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT sum(LIGFACT.montantht) AS total, LIGFACT.codtva AS tva ,
               TVA.valtva AS valtva
    FROM   ":STK2008:LIGFACT"  , ":STK:TVA"  
    WHERE (LIGFACT.nfacture = :nfacture) AND (LIGFACT.codtva=TVA.codtva)
    GROUP BY LIGFACT.codtva,TVA.valtva
    Ce code je l'ai testé et il fonctionne à merveille.

    Un grand à SQLpro pour m'avoir éclairer le chemin comme d'habitude d'ailleurs

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 06/02/2014, 20h24
  2. Réponses: 4
    Dernier message: 08/06/2006, 20h06
  3. Réponses: 1
    Dernier message: 10/05/2006, 14h54
  4. Relation entre tables dans bdd différentes
    Par Mandotnet dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 29/03/2006, 08h03
  5. afficher les champs null de deux tables dans un select
    Par poil dans le forum Langage SQL
    Réponses: 2
    Dernier message: 27/09/2005, 15h05

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