PROBLEME REQUETE: SELECT nom FROM (plusieur table)

PROBLEME REQUETE: SELECT nom FROM (plusieur table) - SQL/NoSQL - Programmation

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

Reply

Marsh Posté le 07-03-2005 à 12:13:39   

Reply

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...[:urd]


Message édité par skeye le 07-03-2005 à 12:17:29

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 07-03-2005 à 12:32:11    

+1

Reply

Marsh Posté le 07-03-2005 à 12:35:37    

et evite les accents dans les noms de tables...


---------------
Nos estans firs di nosse pitite patreye...
Reply

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

Reply

Marsh Posté le 07-03-2005 à 18:58:15    

quel version de mysql ?


---------------
Nos estans firs di nosse pitite patreye...
Reply

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.

Reply

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.
 
Si quelqu'un pourrait m'aider pour cette requête se serait sympa.


version de mysql périmée, tu y arriveras aps en une seule requête.


---------------
Can't buy what I want because it's free -
Reply

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?

Reply

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...:o


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 07-03-2005 à 19:27:57   

Reply

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?

Reply

Marsh Posté le 07-03-2005 à 19:32:17    

C bon Jlai trouvé merci ;-)

Reply

Marsh Posté le 07-03-2005 à 19:59:21    

J'aime bien le franglais du message d'erreur :D
 
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 ;)

Reply

Marsh Posté le 07-03-2005 à 20:00:14    

Arjuna a écrit :

J'aime bien le franglais du message d'erreur :D
 
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 ;)


bah c'est kif kif, c'est plusieurs requêtes pour un résultat...[:ddr555]


---------------
Can't buy what I want because it's free -
Reply

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  

Reply

Marsh Posté le 07-03-2005 à 20:48:02    

alor kelkkun pe t-il m'aider?

Reply

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 ?

Reply

Marsh Posté le 07-03-2005 à 21:45:42    

Madi a écrit :


SELECT nom FROM action_sociale  
WHERE nom like'%".$nom_recherche."%'


Manque pas un espace après ton like?


---------------
Can't buy what I want because it's free -
Reply

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?

Reply

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.
I don't know why?


Il y a quelquechose dans ta table? [:autobot]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 07-03-2005 à 22:06:16    

Mdr! Bah wui kan même

Reply

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


Message édité par esox_ch le 07-03-2005 à 23:17:59

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 07-03-2005 à 23:32:06    

:heink: 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 :pt1cable:
 
MySQL ça vous mange le cerveau c'est mal ! :o

Reply

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 :D.
 
Parcontre si tu comprends plus rien j'peu pa t'aider :lol:


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

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 :D.
 
Parcontre si tu comprends plus rien j'peu pa t'aider :lol:


il comprend rien parce-que ta syntaxe est pas bnne du tout...[:joce]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 08-03-2005 à 10:16:06    

skeye a écrit :

il comprend rien parce-que ta syntaxe est pas bnne du tout...[:joce]


 
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


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

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.


---------------
Can't buy what I want because it's free -
Reply

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 :
  1. SELECT myname.nom FROM (SELECT table_list.nom_table FROM table_list WHERE 1) AS myname WHERE 1


 
Ca revient exactement à faire ça :
 

Code :
  1. SELECT table_list.nom_table FROM table_list


 
Résultat, je comprends vraiment toujours pas, même après une nuit de sommeil, la raison de cette première requête !

Reply

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.


Message édité par esox_ch le 08-03-2005 à 10:35:29

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

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


Message édité par Arjuna le 08-03-2005 à 11:58:31
Reply

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:  
 
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  


 

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.
I don't know why?


 

Madi a écrit :

Mdr! Bah wui kan même


 
oh la laaaaaaaaaa...... que c'est pénible ces posts illisibles écrits en SMS :fou:
si tu fais pas un effort de rédaction et d'orthographe dans les posts suivants, je ferme ton topic


Message édité par Harkonnen le 08-03-2005 à 12:06:05

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 08-03-2005 à 18:18:23    

Arjuna a écrit :

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


 
Le truc, comment faire un union si on sait pas a l'avance quelles tables il faut unir ? :??:


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

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...[:urd]


Message édité par skeye le 08-03-2005 à 18:20:08

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 08-03-2005 à 18:23:49    

En l'occurence c'etait une question purement personnelle :D. 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 :D . Je crois que je suis condamné a regler ca avec une boucle php :(


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 08-03-2005 à 18:25:58    

esox_ch a écrit :

En l'occurence c'etait une question purement personnelle :D. 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 :D . 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...[:dawa]


---------------
Can't buy what I want because it's free -
Reply

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 ?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

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.

Reply

Marsh Posté le 08-03-2005 à 19:27:13    

D'accord merci :) . Zut alors :P


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed