Multi select dans plusieurs tables

cs_rocknroll2 Messages postés 100 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 22 janvier 2010 - 22 oct. 2005 à 18:36
cs_rocknroll2 Messages postés 100 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 22 janvier 2010 - 23 oct. 2005 à 17:29
Bonjour à tous,
J'ai 11 tables.
Dans table1, j'ai tous les éléments des 9 autres tables.
Dans les table2 à table10, j'ai donc certains éléments de la table1, mais pas tous.
Le but est de select un "nom" de table1 et d'afficher à la suite, les éléments des 9 autres tables pour le même "nom" s'il existe dans chacune des tables.....

Je suis arrivé au résultat voulu, mais en faisant des requétes dans des requétes, elles même dans des requétes, elles même dans des while.....

Bref très lourd et très long !

Y aurait-il une solution plus "académique". Le problème supplémentaire étant que tous les "nom" de la table1 ne sont pas forcément dans les autres tables... ce qui m'a créé des erreurs de requètes....

Merci à ceux qui voudront bien se pencher sur ce problème.

Bonne prog à tous.

Rocknroll2

4 réponses

monoceros01 Messages postés 420 Date d'inscription vendredi 28 novembre 2003 Statut Membre Dernière intervention 20 mars 2006
23 oct. 2005 à 04:46
1/ SELECT nom FROM table1 WHERE clause_where



2/ Là tu as deux choix :

a) SELECT * FROM table2, table3, table4,... WHERE table2.nom '$nom' AND table3.nom '$nom' AND table4.nom = '$nom' AND ....

Mais si le nom recherché est absent d'une des
tables, il n'y aura aucun résultat. Donc si tu utilise cette méthode,
il faudra que tu inscrives à chaque fois que tu crée un nom dans la
table1 le dupliquer dans toutes les tables.



b)

SELECT * FROM table2 WHERE nom='plap'

UNION DISTINCT

SELECT * FROM table3 WHERE nom='plap'

UNION DISTINCT

SELECT * FROM table4 WHERE nom='plap'

UNION DISTINCT

SELECT * FROM table5 WHERE nom='plap'

UNION DISTINCT

....

Mais la il faut que le type des colonnes * correspondent entre chaque
table, car les données seront fusionnées colonnes par colonnes. (Essaye
cette requète sur ton phpmyadmin tu verras bien le résultat =) )



Voilà. Personnellement je préfère la solution a).

De toutes façons, je pense que les relations entre table1 et les autres
sont en one-to-one ou one-to-many, donc tu dois répéter la clé primaire
de table1 dans toutes les autres tables. (Après ça dépend ton niveau en
structure de base de données, il est possible que tu n'es pas fait
comme ça.... Mais y faudrait ;p)
0
cs_rocknroll2 Messages postés 100 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 22 janvier 2010
23 oct. 2005 à 10:20
Merci monoceros01 pour ta réponse, mais je ne sais pas si cela correspond à ce que je recherche, je vais quand même m'y pencher.
En fait:
Table1: pseudo, Nom, prénom, adresse..... etc (regroupant tous les pseudos des autres tables)
Table2 à table10: pseudo, date, info1, info2
J'ai donc juste le pseudo en "commun" (pas de doublon possible).
Ce pseudo peut se trouver dans table2, table3 et table10, mais pas dans les autres tables....
Je cherche au final à avoir un tableau qui m'affiche:

Table1.pseudo / information de table3 sur ce pseudo / information de table10 sur ce pseudo.

Actuellement, je me plante si le pseudo n'existe pas dans l'une des tables 2 à 10.
Je suis donc obligé, pour chaque pseudo de la table1, de faire une requète séparée sur toutes les autres tables...
Genre:
Select pseudo from table2 where table2.pseudo = table1.pseudo
si réponse positive, alors je récupère les infos
Select pseudo from table3 where table3.pseudo = table1.pseudo
si réponse positive, alors je récupère les infos
Select pseudo from table4 where table4.pseudo = table1.pseudo
si réponse positive, alors je récupère les infos... etc...

C'est très long....

J'ai essayé une requéte "globale", mais soit je n'obtiens rien, soit j'obtiens uniquement les infos sur les pseudos qui existent dans TOUTES les tables !

si toi ou quelqu'un d'autre avait une idée...

rocknroll2
0
monoceros01 Messages postés 420 Date d'inscription vendredi 28 novembre 2003 Statut Membre Dernière intervention 20 mars 2006
23 oct. 2005 à 10:25
Hum, il est possible que tu n'es pas bien conçu la structure de ta base... il faudrait que tu me copie/colle celle-ci

(dans phpmyadmin va dans "exporter" et selectionne les tables de ta
base et coche "exporter la structure seule", tu décoche transmettre" tu
envoi le formulaire et ça devrait t'afficher la structure sous forme de
requète SQL)



Ensuite, explique moi à quoi te sers chaque table.



En ayant une vue plus globale je pourrais mieux t'aider.
0
cs_rocknroll2 Messages postés 100 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 22 janvier 2010
23 oct. 2005 à 17:29
monoceros01,
je viens de t'envoyer un MP avec les renseignements que tu demandes.
Merci pour ton aide.

En attendant, si qqu'un a une idée lumineuse...
rocknroll2
0
Rejoignez-nous