Probleme Jointure entre plusieurs tables
Résolu
Lemjid
Messages postés
72
Statut
Membre
-
Lemjid Messages postés 72 Statut Membre -
Lemjid Messages postés 72 Statut Membre -
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
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
A voir également:
- Probleme Jointure entre plusieurs tables
- Tables des matières word - Guide
- Tables ascii - Guide
- Tables des annexes ✓ - Forum Word
- Problème table des matières word - Forum Word
- Oracle liste des tables - Forum Oracle
4 réponses
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.
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
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
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
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
600 tables, schéma à la con ! celui qui a conçu cela n'a rien compris aux SGBD
Donc il faut te mettre aux procédures
J'ai une base avec 3 lignes dans obj et 3 tables obj_x
Avec

Je mets le résultat dans un fichier texte
je supprime le dernier union en trop, et je lance le sql ainsi obtenu, j’obtiens alors le resultat

Avec tables la requete devrait être :
mais un sql avec 600 union ???
Donc il faut te mettre aux procédures
J'ai une base avec 3 lignes dans obj et 3 tables obj_x
Avec
SELECT CONCAT("SELECT * FROM obj right OUTER join obj_",id," on 0=0 where id=",id,"\n union ") from obj

Je mets le résultat dans un fichier texte
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
union
SELECT * FROM obj right OUTER join obj_3 on 0=0 where id=3
union
je supprime le dernier union en trop, et je lance le sql ainsi obtenu, j’obtiens alors le resultat

Avec tables la requete devrait être :
SELECT CONCAT("SELECT * FROM objects right OUTER join objects_data_",id," on 0=0 where id=",id,"\n union ") from objects
mais un sql avec 600 union ???
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).
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).