PROBLEME REQUETE: SELECT nom FROM (plusieur table) - SQL/NoSQL - Programmation
Marsh Posté le 07-03-2005 à 12:17:14
select nom from sport
union
select nom from seniors
union
select nom from machin
...
Mais ça me parait douteux, tout ça...
Marsh Posté le 07-03-2005 à 12:35:37
et evite les accents dans les noms de tables...
Marsh Posté le 07-03-2005 à 18:18:57
G essayer avec les UNION mais sa marche tjs pas sa me donne sa:
Erreur
requête SQL :
SELECT nom FROM action_sociale
UNION
SELECT nom FROM anciens_combattants LIMIT 0, 30
MySQL a répondu:
Something is wrong in your syntax près de 'UNION
SELECT nom FROM anciens_combattants LIMIT 0, 30' à la ligne 2
Marsh Posté le 07-03-2005 à 18:58:15
quel version de mysql ?
Marsh Posté le 07-03-2005 à 19:16:39
Moi G easyphp 6.0 é la version de Mysql se doit être celle-ci:MySQL 3.23.49-max.
Si quelqu'un pourrait m'aider pour cette requête se serait sympa.
Marsh Posté le 07-03-2005 à 19:24:38
Madi a écrit : Moi G easyphp 6.0 é la version de Mysql se doit être celle-ci:MySQL 3.23.49-max. |
version de mysql périmée, tu y arriveras aps en une seule requête.
Marsh Posté le 07-03-2005 à 19:26:02
A wé sérieu sa veut dire qu'il faut que je télécharge easyphp 7.0 pour reussir un tel requête?
Marsh Posté le 07-03-2005 à 19:27:57
Madi a écrit : A wé sérieu sa veut dire qu'il faut que je télécharge easyphp 7.0 pour reussir un tel requête? |
non, ça veut dire que mysql avant sa version 4.1 ne gère pas les requêtes imbriquées.
Quand à easyphp je connais pas, je sais pas quelle version ils filent avec, mais c'ets nettement mieux detout installer à la main...
Marsh Posté le 07-03-2005 à 19:30:33
a ok jvoi le truc est tu saurais pas ou jpe télécharger cette version stp?
Marsh Posté le 07-03-2005 à 19:59:21
J'aime bien le franglais du message d'erreur
PS: skeye, un UNION, c'est pas une requête imbriquée, mais en effet, MySQL ne le supportait en effet pas dans cette version
Marsh Posté le 07-03-2005 à 20:00:14
Arjuna a écrit : J'aime bien le franglais du message d'erreur |
bah c'est kif kif, c'est plusieurs requêtes pour un résultat...
Marsh Posté le 07-03-2005 à 20:22:35
Je cherche un e requête pour faire une recherche sur plusieur table une requete de se stile:
SELECT nom FROM action_sociale
WHERE nom like'%".$nom_recherche."%'
Avec Easyphp 6.0 sa marcher nikel mais maintenant que j'ai installer la nouvelle version sa marche plus
La requete que je ve faire exactement est de ce stile:
SELECT nom FROM action_sociale
UNION
SELECT nom FROM anciens_combattants
WHERE nom like'%".$nom_recherche."%'
Si quelqu'un peut m'aider sa serait gentil
Marsh Posté le 07-03-2005 à 21:28:47
ben non, je ne vois pas ce qui cloche (mise à part qu'il y a du PHP dans tes requêtes).
C'est quoi le msg d'erreur ?
Marsh Posté le 07-03-2005 à 21:45:42
Madi a écrit : |
Manque pas un espace après ton like?
Marsh Posté le 07-03-2005 à 21:46:17
En faite le probleme c'est que la requere est bonne mais je n'est pas de résultat.C'est depuis que je suis passé a easyphp 7.0.
I don't know why?
Marsh Posté le 07-03-2005 à 21:50:32
Madi a écrit : En faite le probleme c'est que la requere est bonne mais je n'est pas de résultat.C'est depuis que je suis passé a easyphp 7.0. |
Il y a quelquechose dans ta table?
Marsh Posté le 07-03-2005 à 22:14:56
Mais s'il veut le recuperer dans toutes ses tables, en admettant que la table "liste_tables" contient le nom de toutes les tables, y aurait pas par hazard un moyen du genre :
SELECT nom FROM (SELECT nom_table FROM liste_tables WHERE 1) WHERE 1 , une sorte de requete imbriquée mais pas sur la WHERE clause mais dans le from
[Edit] Apres un petit moment de reflection sur ce que pouvait bien représenter l'erreur 1284 (jamais vue avant) j'ai trouvé :
SELECT myname.nom FROM (SELECT table_list.nom_table FROM table_list WHERE 1) AS myname WHERE 1
Marsh Posté le 07-03-2005 à 23:32:06
c'est quoi ces "WHERE 1" ? Tu peux les enlever, ça fera pareil. Deplus, c'est quoi cette requête autour de la sous-requête ?
Comprend plus rien moi
MySQL ça vous mange le cerveau c'est mal !
Marsh Posté le 08-03-2005 à 06:56:48
Je sais que c'est pareil sans, mais je les met comme ca le jour ou je dois rajouter une where clause je sais deja ou elle va se placer .
Parcontre si tu comprends plus rien j'peu pa t'aider
Marsh Posté le 08-03-2005 à 07:20:51
esox_ch a écrit : Je sais que c'est pareil sans, mais je les met comme ca le jour ou je dois rajouter une where clause je sais deja ou elle va se placer . |
il comprend rien parce-que ta syntaxe est pas bnne du tout...
Marsh Posté le 08-03-2005 à 10:16:06
skeye a écrit : il comprend rien parce-que ta syntaxe est pas bnne du tout... |
Tout a fait possible, qu'est-ce que tu tu conseilles comme remplacement? Un Truc avec des Join a droite et a gauche? Désolé j'ai toujours trouvé plus clair en faisant ça avec le table.colonne
Marsh Posté le 08-03-2005 à 10:21:23
esox_ch a écrit : Tout a fait possible, qu'est-ce que tu tu conseilles comme remplacement? Un Truc avec des Join a droite et a gauche? Désolé j'ai toujours trouvé plus clair en faisant ça avec le table.colonne |
Non, des union...ça existe pas à ma connaissance ce que tu essaies de faire.
Marsh Posté le 08-03-2005 à 10:26:49
skeye a écrit : Non, des union...ça existe pas à ma connaissance ce que tu essaies de faire. |
Ouais, si, les utilisateurs de MySQL avaient inventé une syntaxe de ouf pour émuler un union à partir de outer join dans tous les sens. Syntaxe bien crade, et bonjour les perfs.
Cela dit, ce qu'essaie de faire esox_ch, je vois toujours pas le rapport (en fait, je vois même pas ce qu'il tente de faire)...
Code :
|
Ca revient exactement à faire ça :
Code :
|
Résultat, je comprends vraiment toujours pas, même après une nuit de sommeil, la raison de cette première requête !
Marsh Posté le 08-03-2005 à 10:31:59
En fait ce que j'essaie de faire est de recuperer une donnée presente dans toutes les tables qui sont enumérées dans table_list.
En gros je voulais eviter de faire un :
SELECT nom_table FROM table_list
Puis avec une boucle de recuperer 1 a 1 les nom_table et de les injecter dans un
SELECT ma_donnee FROM $nom_table
De faire ça en 1 seul coup quoi ...
Car mon probleme est le suivant : Je ne peut pas regroupper toutes les tables en 1 seule car elles n'ont pas toutes le meme nombre de colonnes.
Marsh Posté le 08-03-2005 à 11:55:47
Ben c'est le rôle du UNION.
Sinon, attends, je vais regarder un truc...
[edit] ouais, nan en fait. on peut faire ça qu'avec un UNION, j'ai du confondre avec un autre truc
Marsh Posté le 08-03-2005 à 12:05:21
Madi a écrit : Je cherche un e requête pour faire une recherche sur plusieur table une requete de se stile: |
Madi a écrit : En faite le probleme c'est que la requere est bonne mais je n'est pas de résultat.C'est depuis que je suis passé a easyphp 7.0. |
Madi a écrit : Mdr! Bah wui kan même |
oh la laaaaaaaaaa...... que c'est pénible ces posts illisibles écrits en SMS
si tu fais pas un effort de rédaction et d'orthographe dans les posts suivants, je ferme ton topic
Marsh Posté le 08-03-2005 à 18:18:23
Arjuna a écrit : Ben c'est le rôle du UNION. |
Le truc, comment faire un union si on sait pas a l'avance quelles tables il faut unir ?
Marsh Posté le 08-03-2005 à 18:19:58
esox_ch a écrit : Le truc, comment faire un union si on sait pas a l'avance quelles tables il faut unir ? |
Où tu as vu qu'il connaissait pas les tables??
C'est un problème qui n'a pas de raison d'apparaitre...
Marsh Posté le 08-03-2005 à 18:23:49
En l'occurence c'etait une question purement personnelle . Parceque je me trouve a devoir developper un script qui a un moment listera des info contenues dans toutes les tables de la base de donnée, et ceci a la suite. Je me demandais si en referencent le nom des tables dans une table "table des matieres" on pouvait, par une requete, recuperer toutes les info d'un coup... Le probleme etant qu'une SELECT * from table 1 UNION SELECT * from table 2 ..... Ne pourrait pas marcher parceque je ne connais pas le nombre/nom des tables a l'avance . Je crois que je suis condamné a regler ca avec une boucle php
Marsh Posté le 08-03-2005 à 18:25:58
esox_ch a écrit : En l'occurence c'etait une question purement personnelle . Parceque je me trouve a devoir developper un script qui a un moment listera des info contenues dans toutes les tables de la base de donnée, et ceci a la suite. Je me demandais si en referencent le nom des tables dans une table "table des matieres" on pouvait, par une requete, recuperer toutes les info d'un coup... Le probleme etant qu'une SELECT * from table 1 UNION SELECT * from table 2 ..... Ne pourrait pas marcher parceque je ne connais pas le nombre/nom des tables a l'avance . Je crois que je suis condamné a regler ca avec une boucle php |
euh de toute manière une union sur des champs qui n'ont rien à voir tu vas te faire envoyer paitre, hein...
Marsh Posté le 08-03-2005 à 18:29:13
Ui... Mais a part ca, tu crois que ce serais possible de faire en une seule requete, que ca prenne le nom des tables dans 1 table et que ca lise un champ particulier (le meme) dans toutes les tables? Ou je retourne me coucher et je fais ca en PHP avec un while qui execute plein de mini-requetes ?
Marsh Posté le 08-03-2005 à 19:06:23
Non, c'est impossible. Une des raisons, c'est simplement que d'une table à l'autre, le nom des champs, leur type et leur nombre sera différent. A partir de là, aucun SGBD n'est capable de te retourner les données en une passe.
Tu fais une première requête (dans les tables système, c'est mieu que dans une table "table des matières" ), et ensuite, tu fais une requête par table trouvée. T'as pas le choix.
Marsh Posté le 08-03-2005 à 19:27:13
D'accord merci . Zut alors
Marsh Posté le 07-03-2005 à 12:13:39
Salut,
Bah o faite j'ai un probleme avec une requete de selection g des table qui ont tous lé meme champs et je voudrais afficher le champs nom de toutes ces tables alors je fait donc parexemple: SELECT nom FROM sport, séniors,....(tte lé table)
G une erreur:
Erreur
requête SQL :
SELECT NOM FROM `sport`, séniors LIMIT 0, 30
MySQL a répondu:
Champ: 'NOM' dans field list est ambigu
je sais pas pourquoi si quelqu'un pourrait m'aider?
Merci d'avance