Intérroger +sieurs tables (nombre variable)

Fermé
gismin Messages postés 22 Date d'inscription samedi 6 juillet 2013 Statut Membre Dernière intervention 10 août 2023 - 27 mars 2015 à 19:10
jee pee Messages postés 40432 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 9 novembre 2024 - 28 mars 2015 à 10:09
Bonjour,

$tables= 'table1,table2 ...' : le nombre peut varier.

'SELECT nom, mail FROM' .$tables ou 'SELECT * FROM' .$tables

ne marche pas. Les tables sont toutes semblables (par ex nom et mail dans toutes).

Quelle la bonne syntaxe si c possible?

Merci
A voir également:

3 réponses

jee pee Messages postés 40432 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 9 novembre 2024 9 417
27 mars 2015 à 19:31
Bonjour,

Il faut retravailler les cours de sql ;-))

select nom, mail from T1,T2
ne doit pas marcher car c'est ambigu si les champs de mêmes noms existent dans le 2 tables. Il faut préfixer les champs par le nom de table.

Et si cela marchait, il y aurait un produit cartésien des réponses. Si 10 enregistrements dans T1 et 5 dans T2 ==> réponse = 50 lignes.

La syntaxe simple c'est

select nom, mail from T1
union
select nom, mail from T2

1
gismin Messages postés 22 Date d'inscription samedi 6 juillet 2013 Statut Membre Dernière intervention 10 août 2023 2
27 mars 2015 à 21:43
je suis un peu imbécile et aime bien les réponses très explicites.
Par ex. 50 lignes moi pas comprendre. Pour moi à priori c'est 10+5.

Dans ma question je précise que $tables n'est pas défini , ça peut contenir 2 tables comme 10 . Et des tables différentes:
$tables='table22,table1,table80' ou ='table6,table2'
Donc si c pas possible d'interroger en 1 ligne et s'il faut faire une boucle après avoir défini le nombre de tables et leur valeur ... donc du code du code ...

ou tout rentrer dans une grosse table ... ce qui ne m'inspirait pas à cause du volume voir de la sécurité et peut être du temps de recherche (?).
0
jee pee Messages postés 40432 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 9 novembre 2024 9 417
Modifié par jee pee le 28/03/2015 à 10:10
Non c'est 10 X 5. Le select sans restriction donne le produit des 2 tables. Pour avoir 15 lignes c'est l'union telle que dans mon select plus haut.

Et je pense en lisant ta dernière remarque que effectivement tu as un problème de conception de la base de données.

On ne crée pas une table chaque jour pour enregistrer, par exemple, des connexions du jour à un site. Il n'y a qu'une seule table avec toutes les connexions.

Un jour j'ai vu une table dans une base qui faisait 192 GO et des centaines de millions de lignes.

        Un étranger, c'est un ami qu'on n'a pas encore rencontré.
0