Probleme Jointure entre plusieurs tables [Résolu]

Signaler
Messages postés
21
Date d'inscription
mardi 26 février 2019
Statut
Membre
Dernière intervention
5 mai 2021
-
Messages postés
21
Date d'inscription
mardi 26 février 2019
Statut
Membre
Dernière intervention
5 mai 2021
-
Je travaille sur un application PHP, Mysql dont j'ai une base composé de trois tables :
table 1 : objects (id, nom) [352093088485056, objects01 ; 358480086797737, objects02]
table 2 : objects_data_352093088485056(post,haut)
table 3 : objects_data_358480086797737(post,haut)
Comment je peut faire la jointure entre ces trois tables pour que je puisse récupérer toutes les
informations ?
Pour info : j'ai pas la possiblité d'ajouter des clés étrangres au niveau de tables
articles_data_352093088485056 , articles_data_358480086797737

4 réponses

Messages postés
31796
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
5 mai 2021
7 630
Bonjour,

Cela semble une super mauvaise structure des données.

Avec 3 tables tu peux faire un sql comme, en remplaçant les 1 et les 2 par tes identifiants.

SELECT * FROM obj
right OUTER join obj_1 on 0=0
where id=1
UNION
SELECT * FROM obj
right OUTER join obj_2 on 0=0
where id=2 


Avec 100, 1000 tables ... il faut probablement passer par une procédure PLSQL (si ça existe en Mysql ?).

Ou sinon un sql qui va générer en spool un sql
SELECT CONCAT("SELECT * FROM obj right OUTER join obj_",id," on 0=0 where id=",id," union ") from obj



Messages postés
21
Date d'inscription
mardi 26 février 2019
Statut
Membre
Dernière intervention
5 mai 2021

Bonjour Monsieur,
Merci pour votre retour : La première solution c'est impossible j'ai 600 tables :(
En Mysql : c'est possible de faire des procédure mais j'ai pas aucune idée
La deuxième : j'ai pas bien compris l'exemple ; j'ai appliquer ce truc dans ma basse et j'ai pas eux la bonne résultat toujours : SELECT * FROM ...
SELECT * FROM ...
Merci d'avance pour votre aide
Messages postés
15484
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 mai 2021
846 >
Messages postés
31796
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
5 mai 2021

bonjour,
puisque c'est du PHP, il me semble assez simple d'utiliser la première table pour obtenir les noms des autres tables, et d'ensuite parcourir toutes les tables pour en récupérer toutes les informations.
Messages postés
21
Date d'inscription
mardi 26 février 2019
Statut
Membre
Dernière intervention
5 mai 2021
>
Messages postés
15484
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 mai 2021

Bonjour,
Merci pour votre retour ,
Est-il possible de nous expliquer des plus : est-il possible d'appliquer ce truc sur les tables faites par @jee pee en haut.
Merci d'avance
Messages postés
15484
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 mai 2021
846
je me demande pourquoi indiquer au départ qu'il y a trois tables, pour ensuite clarifier qu'il y en a 600.
>
Messages postés
15484
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 mai 2021

J'ai donnée un exemple : si j'arrive a trouver la bonne requête avec 3 tables je peut l'appliquer même sur 1000 tables .
Messages postés
15484
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 mai 2021
846 > mysqla
tu peux alors faire ainsi avec trois tables:
comme tu fais du PHP, tu peux, en PHP, lire la table objects et créer cette requête:
select * from objects_data_352093088485056
union all
select * from objects_data_358480086797737
Messages postés
15484
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 mai 2021
846
à quoi servent les tables articles_data_, elles complètent les tables objects_data_?
Messages postés
21
Date d'inscription
mardi 26 février 2019
Statut
Membre
Dernière intervention
5 mai 2021

1- La table objects c'est la table principale : Lors de l'ajout d'un nouveau object l'insertion est faite
au niveau de cette table : l'utilisateur ajoute les informations fixes.
2- Les tables : objects_data_xxx ce sont les tables utilisées pour stocker des informations
et pour assurer l'archivages vue que les informations sont très volumineux (plus que 500000 lignes par jours).
Messages postés
15484
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 mai 2021
846
et articles_data_xxx?
Messages postés
21
Date d'inscription
mardi 26 février 2019
Statut
Membre
Dernière intervention
5 mai 2021
>
Messages postés
15484
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 mai 2021

c'est objects_data_xxx
Problème résolue avec simple boucle for