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

Requêtes et SQL. Discussion :

Requête UNION sur tables attachées -- Problème ODBC [AC-2010]


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Mars 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel

    Informations forums :
    Inscription : Mars 2014
    Messages : 80
    Points : 61
    Points
    61
    Par défaut Requête UNION sur tables attachées -- Problème ODBC
    Bonjour à tous,

    J'ai un gros volume de données et j'ai donc créé 12 bases de données (janvier-février-....-décembre) pour éviter le problème de la limite de 2 GO.

    Dans un premier temps, j'essaye de bien comprendre le processus ODBC avec ACCESS pour trouver peut-être une solution via MySQL dans le futur vu que le volume va en augmentant.

    J'ai donc créé des tables attachées dans ma base données principale. Lorsque je clique sur la table, mes données sont bien affichées.

    J'ai donc voulu faire une requête sur plusieurs tables. J'ai trouvé une instruction SQL qui pourrait normalement convenir. Il s'agit de "UNION". Après avoir enregistré ma requête, la petite icône de la requête se modifie en planête. je suppose donc que le code est bon.

    Lorsque je veux la lancer, j'ai une la fenête ODBC qui s'ouvre et là je m'y perds un peu. J'ai déjà lu l'article de Christophe Warin mais cela reste un peu vague pour moi....

    Toutes les tables ont la m^me structure et sont situées sur le m^me disque dur. La base de données ne devra pas être en réseau.

    Un grand merci...

  2. #2
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    Bonsoir,

    Pouvez vous mettre des capture écran pour être plus explicite ?
    Car je ne comprends pas pourquoi vous passez par ODBC ?
    Vos tables sont des tables Access ou d'un autre moteur de base de données comme MS SQL Server, Oracle ou MySQL ?
    ODBC sert pour des sources de données autre qu' Access.
    En plus vous parler pour votre requête d'une icone représentant une planète.
    Ce type de requête n'est pas une requête Union, mais une requête SQL Direct, via ODBC pour envoyer une requête au serveur concerné par la source ODBC défini.
    Or si vous ne lui avez pas donner les renseignement c'est logique qu'elle vous retourne une erreur.
    Les requêtes Union sont représentés par l'UNION de deux anneaux.
    Et si vos tables sont des tables Access, vous devez les attacher directement par Access et non par ODBC.
    maintenant si vos données sont si importante que vous devez les décomposer en 12 tables par crainte de la limite des 2Go ne ne serait vous conseiller de changer de moteur de base de données et soit de passer effectivement à MySQL ou SQL server, car Access ne travaille pas en client serveur et rapatrie toutes les données d'une table avant de les trier ou les filtrer.

  3. #3
    Membre du Club
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Mars 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel

    Informations forums :
    Inscription : Mars 2014
    Messages : 80
    Points : 61
    Points
    61
    Par défaut
    Bonjour Didier,

    Merci pour la réponse.

    Voici une capture d'écran.

    CaptureEcran.docx

    Voici également le code de la requête:

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT [T-Arch1].[Champ1-1], [T-Arch1].[Champ1-2], [T-Arch1].[Cahmp1-3]
    FROM [T-Arch1]
    Union
    SELECT [T-Arch2].[Champ2-1], [T-Arch2].[Champ2-2], [T-Arch2].[Cahmp2-3]
    FROM [T-Arch2]
    Union
    SELECT [T-Arch3].[Champ3-1], [T-Arch3].[Champ3-2], [T-Arch3].[Cahmp3-3]
    FROM [T-Arch3];


    J'ai fait un autre test qui marche celui-là. J'ai fait une requête sur chaque table et ensuite je fais une requête union sur ces requêtes.

    Pour le MYSQL, je me doute que c'est la solution à préconiser mais je suis encore trop novice pour me lancer maintenant. J'ai +/- 1 an devant moi pour m'y mettre

    Encore merci pour le temps passé sur mon prob

  4. #4
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    bonsoir,

    C'est bien ce que je pensais, ta requête Union est une requête ODBC ?
    Pourquoi alors que tes tables sont des tables attachées.
    Ta syntaxe est bonne, mais quand tu as du la créer, sans le faire exprès tu as du la déclaré comme SQL direct !
    Normalement tu devrai avoir le logo suivant a la place du globe :
    Nom : Sans titre.png
Affichages : 431
Taille : 1,2 Ko
    Je te conseil donc de refaire cette Reqûete union en prenant une requête simple, tu ne choisi aucune table, ensuite dans l'onglet "Créer" a gauche dans "Affichage" tu choisi "SQL" et la tu colle ta syntaxe ;-)
    et tout devrait fonctionner sans aucun lien ODBC !

  5. #5
    Membre du Club
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Mars 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel

    Informations forums :
    Inscription : Mars 2014
    Messages : 80
    Points : 61
    Points
    61
    Par défaut
    Salut Didier,

    Tu avais raison. J'ai simplement recopié mon code dans une nouvelle requête et BINGO...Ca marche.

    Encore une petite question. Je vais pouvoir faire facilement une requête paramétrée mais si je souhaite faire une recherche sur une date et vu que j'ai une table pour chaque mois, comment va réagir le programme. Il va récupérer l'ensemble des données de toutes les tables ou il va uniquement prendre ma condition ? Si il charge l'ensemble des données, cela risque de prendre de plus en plus de temps....Est-ce qu'il y une technique autre que MySQL pour améliorer le système ?

    Encore merci.

    Je coche "résolu"

  6. #6
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    Bonjour,

    Content que cela marche

    Pour répondre à ta question, la différence fondamentale entre une base de donnée client serveur et un autre systeme est le suivant:
    En client serveur, je pose une question au serveur, qui gère dans son propre espace de travail les données et te retourne la réponse.
    Il peut donc traiter des milliers de ligne en local et ne t'en renvoyer qu'une.
    Avec Acces, ce n'est qu'un fichier et aucun ressource d'attribuer sur le serveur.
    Doncton PC ou propore espace de travaille récupère l'ensemble des données (Trafic réseau important), les traite et ensuite t'affiche la réponse une ou plusieurs ligne.
    Donc si on travail en local ou avec un réseau local pas trop encombré et avec de petite base ce n'est plus forcement un soucis.
    Mais lorsque que nous passons à des tailles importante de donné de l'ordre du Go cela peux devenir extrêmement lent et bloquant.
    Une astuce peut-etre dans ton cas, c'est qu'avant d'envoyer ta requête Union, tu puisse réduire le nombre de table en fonction de tes critère de date. Mais cela n'est possible que si dans une table comme celle de "janvier" tu n'y a stocké que les donnée d'une même année
    Si non Access fonctionne aussi très bien avec MS SQL server

    Bonne continuation

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

Discussions similaires

  1. requête UNION sur deux tables
    Par cotede2 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 22/05/2009, 11h57
  2. Requête Union sur 3 tables
    Par Nounours1 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 18/11/2007, 15h08
  3. [FAQ] Vider rapidement une table attachée en ODBC
    Par guidav dans le forum Contribuez
    Réponses: 2
    Dernier message: 18/07/2006, 18h21
  4. Requête union sur Interbase
    Par AlexB59 dans le forum InterBase
    Réponses: 2
    Dernier message: 23/11/2005, 12h47
  5. Réponses: 4
    Dernier message: 23/09/2005, 10h16

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