J'essaie de réaliser est de créer une requête complexe composée de quelques sous-requêtes. L'idée est de permettre à un homme d'affaires de s'exécuter chaque semaine pour extraire des données de reporting.
L'effet serait similaire à la requête ci-dessous, où toutes les données de nombreuses tables sont affichées dans un seul résultat.
select * from table1, table2, table3
J'ai donc besoin de quelque chose comme ça, mais ça ne marche pas.
select
(select * from table1 where ...... ) as table1,
(select * from table2 where....... ) as table2
Manuellement, je pouvais exécuter les sous-requêtes séparément, puis ajouter manuellement les résultats dans une grande feuille Excel. Mais je veux faciliter la tâche à l'homme d'affaires et minimiser les erreurs.
Est-ce possible dans MySQL?
La raison en est que je convertis des instructions Oracle PIVOT SQL existantes en équivalence MySQL et que les sous-requêtes sont assez complexes.
Je peux fournir le SQL Oracle si nécessaire.
Très apprécié comme toujours.
Après quelques manipulations:
select * from
(select * from table1 where survey_user_id=4 ) as T1
,
(select * from table2 where survey_field_type_id=100 ) as T2
,
(select * from table3 ) as T3
Si je vous comprends bien, vous avez juste besoin de UNION: D
(SELECT column1 AS name1, column2 AS name2 FROM table1 WHERE ...... )
UNION
(SELECT column3 AS name1, column4 AS name2 FROM table2 WHERE ...... )
UNION
....
Comme mentionné ci-dessous dans le commentaire, les colonnes Doivent avoir le même nom (vous pouvez utiliser des alias) et rester dans le même ordre.
select main.*,
(select col from tbl1 where tbl1.id=main.id) as col1,
(select col from tbl2 where tbl2.id=main.id) as col2,
(select col from tbl3 where tbl3.id=main.id) as col3
from master as main