Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/09/2011, 17h38   #1
Invité de passage
 
Inscription : septembre 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : septembre 2011
Messages : 4
Points : 0
Points : 0
Par défaut Problème requête UNION avec 3 tables et connecteur odbc mysql

Bonjour à tous.

Le titre du post est un peu lourdingue mais je m'explique.

Ce que je souhaite :
J'utilise le connecteur ODBC pour Mysql 5.1 afin d'utiliser des tables Mysql (bien sûr) dans Access.
Je souhaite, dans une seule colonne de requête Access, sortir des valeurs venant de 3 tables MySql. Ceci afin de tout regrouper dans une seule liste déroulante.

Ce que j'ai fais :
La requête sql Access est la suivante (le nom des tables est pour l'exemple):
Code :
1
2
3
4
5
(SELECT nom FROM table1)
UNION
(SELECT nom FROM table2)
UNION
(SELECT nom FROM table3);
J'obtiens le message d'erreur suivant :


Je précise que :
Si je fais la même requête mais avec seulement 2 tables, ça fonctionne.
Si je fais la même requête avec 3 tables Access ça fonctionne.
Si je fais la même requête avec 3 tables dans Phpmyadmin, ça fonctionne aussi.

Je suis un peu dépité par le problème.
Images attachées
Type de fichier : png Sans titre.png (29,8 Ko, 28 affichages)
bluzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2011, 19h40   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 327
Points : 18 327
Envoyer un message via MSN à CinePhil
Je pense que les parenthèses sont inutiles mais tu devrais donner la vraie requête pour qu'on se rende mieux compte de cette erreur de syntaxe.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2011, 19h52   #3
Invité de passage
 
Inscription : septembre 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : septembre 2011
Messages : 4
Points : 0
Points : 0
Bonsoir.
La requête initiale était ainsi :
Code :
1
2
3
4
5
(SELECT name FROM glpi_monitortypes) AS [Type de matériel]
UNION
(SELECT name FROM glpi_peripheraltypes)
UNION
(SELECT name FROM glpi_printertypes);
L'idée est de regrouper dans une seule liste déroulante (ou colonne de requête) tous les types de moniteurs, de périphériques et d'imprimantes qui sont dans 3 tables différentes (et ça il faut faire avec). Néanmoins tables de structure absolument identique.

Ceci dit, j'ai fait autrement pour avancer dans ce que je faisais et là ça fonctionne avec 3 "UNION". Par contre la requête formée à partir de 3 autres distinctes et misent bout à bout avec UNION entre chaque fonctionne parfaitement.

Je n'ai malheureusement pas assez de connaissance en SQL pour trouver le truc.
bluzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2011, 23h17   #4
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 327
Points : 18 327
Envoyer un message via MSN à CinePhil
Le message d'erreur de MySQL indique que celle-ci est près du premier UNION. Chez MySQL, "near" veut dire en fait "just before" (juste avant) !
Ce que MySQL n'aime pas, c'est l'alias entre crochets à la manière d'Access qui n'est pas conforme au standard SQL. En plus, l'alias est mal placé, il faut le mettre juste après le nom de la colonne.

Normalement, ça devrait passer comme ceci :
Code :
1
2
3
4
5
6
7
8
SELECT name AS Type_materiel
FROM glpi_monitortypes
UNION
SELECT name 
FROM glpi_peripheraltypes
UNION
SELECT name 
FROM glpi_printertypes
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 17h03   #5
Invité de passage
 
Inscription : septembre 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : septembre 2011
Messages : 4
Points : 0
Points : 0
Et bien ça ne fonctionne toujours pas. Même erreur.
Le truc vraiment que je n'explique pas c'est que si je garde seulement 2 tables. Ca fonctionne. Dès qu'elles sont trois, c'est foutu.

Une limitation de ODBC ? Après tout le message d'erreur indique "ODBC -- l'appel à échoué".
bluzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 17h12   #6
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 327
Points : 18 327
Envoyer un message via MSN à CinePhil
Si la requête que j'ai donnée fonctionne sans problème sur le serveur MySQL, c'est que c'est peut-être en effet un problème odbc.

Quel message d'erreur exact as-tu maintenant ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 18h12   #7
Invité de passage
 
Inscription : septembre 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : septembre 2011
Messages : 4
Points : 0
Points : 0
Oui en effet si je la tape directe dans phpmyadmin par exemple, ça me sort ce qu'il faut.

Le message est exactement le même que dans le 1er message.
bluzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 23h31   #8
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 327
Points : 18 327
Envoyer un message via MSN à CinePhil
Le message d'erreur affiché dans le premier message (You have an error in your SQL syntax...) est typiquement une erreur provenant de MySQL. Si tu dis que la requête s'exécute normalement dans phpMyAdmin, c'est qu'elle ne provoque pas cette erreur de syntaxe !

Montre nous la requête exacte que tu soumets au serveur et le message exact que tu reçois en retour.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 12h08   #9
Invité de passage
 
Inscription : juillet 2004
Messages : 3
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 3
Points : 1
Points : 1
essaye de créer une vue dans mysql, et fais un simple select via access
fredo27 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h45.


 
 
 
 
Partenaires

Hébergement Web