Requete dans plusieurs tables [resolu] - SQL/NoSQL - Programmation
Marsh Posté le 02-06-2009 à 11:27:00
select least(min(a.date,b.date) FROM a , b
et non, on peut pas faire de recherche sans tous les champs de toutes les tables sans les nommer explicitement
bonne recherche
edit : je suis curieux, est ce que tu peux m'expliquer quel est le besoin de créer des tables en temps réel ?
Marsh Posté le 02-06-2009 à 11:30:41
l
Citation : ensuite y a t il moyen d effectuer une recherche avec dans le from l'equivalent de "all tables" |
non, il faut interroger le dictionnaire de donnée (propre a chaque sgbd, pour oracle je peux t'aider, pour le reste pas), et faire du sql dynamique pour interrober chaque table
Citation : select date from a,b; |
ce serait plus judicieux de faire des requete séparée, la il va s'amuser a faire le produit cartésien alors que ce n'est pas nécéssaire.
Marsh Posté le 02-06-2009 à 11:42:58
En fait , la base de données est connectée avec un logiciel , qui construit de nouvelles tables a chaque fois qu il enregistre de nouvelle données.
J aimerais construire une requête qui me renvoie la date la plus petite contenue dans cet ensemble de table qui est "mobile"
il semblerait que ca ne soit pas si facile alors !!!!
en tout cas , je ne comprends pas pourquoi la requete
Code :
|
ne fonctionne pas .
Merci de vos reponses et du temps accordé à mon probleme
Marsh Posté le 02-06-2009 à 11:44:57
parcequ'il ne sait pas de quelle date tu parles ( a.date , ou b.date )
quand un champ porte le même nom dans plusieurs table,s tu dois appeler nomTable.nomChamp
Marsh Posté le 02-06-2009 à 11:46:34
alors peut etrre faut il faire une jointure des 2 tables avant ?
Joindre les 2 colonnes date ?
cela doit etre possible
je vais voir
Marsh Posté le 02-06-2009 à 13:51:53
Je vais formuler alors ma nouvelle question , vous avez trois tables , a,b,c , dont la structure n a pas forcement quelque chose en commun à part une colonne DATETIME.
Comment feriez vous pour rechercher la date la plus petite ?
Marsh Posté le 02-06-2009 à 13:56:39
ça marche pas ce qu'a proposé flo : "select least(min(a.date,b.date)) FROM a , b" ?
Marsh Posté le 02-06-2009 à 14:08:17
franchement si t'as 3 tables de 1000 lignes avec cette méthode il va d'abord croiser inutilement et générer en mémoire une pseudo table de 1000x1000x1000 lignes (et ça m'étonnerait qu'elles fassent moins de 1000) -> mauvais plan.
trouver comment interroger le dictionnaire de donnée de ton sgbd, faire une procédure stockée qui va construire des requêtes dynamiques et interroger chaque table séparément, ou avec le langage de ton choix ça marche aussi -> bon plan.
Marsh Posté le 02-06-2009 à 14:10:09
ou tout simplement un union
(SELECT MIN(date) as mini FROM a)
UNION
(SELECT MIN(date) as mini FROM b)
....
(SELECT MIN(date) as mini FROM q)
ORDER BY mini DESC
LIMIT 1
Marsh Posté le 02-06-2009 à 16:18:31
Je vous remercie tous de vos réponses et de l'attention portée à ma demande
La méthode avec les unions marche très bien ,et vos être appliquée dans un cas où je dois le faire sur uniquement 2 tables.
Sinon , je me suis fais un algo en java qui recuperer les noms des tables dans mysql et qui va chercher ce qu'il faut apres.
En ce qui me concerne , vous m'avez bien aidé le sujet est clos !!!!!!
Marsh Posté le 27-06-2009 à 17:36:45
_julien_ a écrit : En fait , la base de données est connectée avec un logiciel , qui construit de nouvelles tables a chaque fois qu il enregistre de nouvelle données. J aimerais construire une requête qui me renvoie la date la plus petite contenue dans cet ensemble de table qui est "mobile" il semblerait que ca ne soit pas si facile alors !!!! en tout cas , je ne comprends pas pourquoi la requete
ne fonctionne pas . Merci de vos reponses et du temps accordé à mon probleme |
sinon un truc dans le genre
Code :
|
oups, j'avais pas vu le [resolu]
Marsh Posté le 02-06-2009 à 11:19:23
Bonjour ,
j ai plusieurs tables (dont la strcuture est differentes) , et dont le nombre peut evoluer (en temps reel)
Le point commun de ces tables et de posseder un champ date,
J aimerais pouvoir lancer une requete qui me renvoie le min de toutes les dates.
Le probleme bloque des le debut ,
select date from a,b;
ERROR 1052 (23000): Column 'date' in field list is ambiguous
, ensuite y a t il moyen d effectuer une recherche avec dans le from l'equivalent de "all tables"
Merci beaucoup
Message édité par _julien_ le 02-06-2009 à 16:19:20