|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : août 2011 Messages : 9 ![]() |
Bonjour,
Après avoir fouillé sur le net et les tutoriels je ne trouve pas la réponse à ma question, qui semble a priori super simple. Je souhaiterais faire une requête préparée sur toutes les tables de ma base de données sachant que ces tables sont totalement similaires (elles ont les mêmes champs). C'est comme si on ajoutait toutes les entrées des tables. Voici mon code : Code :
J'aimerais trouver une méthode pour associer toutes les tables ou plusieurs tables : - UNION n'a pas marché chez moi, peut-être à cause d'une faute de syntaxe - Les jointures ? Mais je n'en vois pas vraiment l'intérêt vu que les champs sont exactement les mêmes. Il ne s'agit pas d'associer des tables hétérogènes. Ainsi, et c'est ma question subsidiaire, puisque toutes mes tables ont la même structure/champs, peut-être me suggéreriez-vous de faire UNE seule et même table ? Je ne suis pas fan de cette solution puisque j'aimerais bien avoir une forme de clarté dans ma base avec des tables distinctes. Merci de votre attention et de votre aide. |
||
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 654 ![]() |
bonjour,
union marchera mais enlevera les doublons. union all n'enlevera pas les doublons. Quelle requête à base d'union avez-vous testé ? Ensuite pourquoi avez-vous X table avec la même structure ? N'y aurai-t-il pas un problème de modélisaiton ? |
|
|
00
|
|
|
#3 | ||
|
Invité de passage
![]() Inscription : août 2011 Messages : 9 ![]() |
Merci pour cette réponse.
Pour mon usage d'UNION j'obtiens le contenu de la table 1 quand je sollicite le contenu de la table 2... Cela vient sans doute de la place du WHERE que je ne trouve pas (si je le déplace j'obtiens des erreurs SQL). Code :
|
||
|
|
00
|
|
|
#4 | ||
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 654 ![]() |
Oui pas d'union dans ce cas là et moins de maintenance côté requetage / vue.
Après si vous avez beaucoup de donnée, le partitionning pourra répondre à certain problème de perf : http://dev.mysql.com/doc/refman/5.1/...titioning.html Donc pour en revenir au problème initiale : Code :
|
||
|
|
00
|
|
|
#5 |
![]() ![]() |
Effectivement, ce serait beaucoup mieux avec une seule table !
La clarté dans la BDD, c'est un modèle de données rigoureusement normalisé qui la donne, pas le pseudo confort du développeur qui après se retrouve à devoir inventer une usine à gaz pour obtenir les données qu'il souhaite !
__________________
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 ! |
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : août 2011 Messages : 9 ![]() |
Disons que je souhaiterais que le WHERE face le tri à partir de l'ensemble des données (des tables du FROM).
Avec mon code cela ne fonctionne pas : quand la table2 est sélectionnée (parce que le "annee = ?" y correspond), eh bien le contenu de table1 et de table2 s'affiche, alors que la table1 ne devrait pas être sollicitée. Avec des parenthèses supplémentaires, j'obtiens des erreurs SQL. |
|
|
00
|
|
|
#7 | |
|
Invité de passage
![]() Inscription : août 2011 Messages : 9 ![]() |
Citation:
Maintenant, si quelqu'un trouve une solution à mon code, je suis preneur également.
|
|
|
|
00
|
|
|
#8 | ||||||
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 654 ![]() |
je ne sais pas la syntaxe exact mais une des solutions suivantes marchera :
Code :
Code :
Code :
|
||||||
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Inscription : août 2011 Messages : 9 ![]() |
Super, la troisième syntaxe semble marcher. Merci beaucoup.
Sujet résolu je pense. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com