私はmysqlベースのプロジェクトに取り組んでいます。複数のテーブルからデータを見つける必要があります。私は検索して、次のような解決策を見つけました
SELECT * from table_1, table_2 where (condition)
しかし、このような解決策は少数のテーブルには問題なく、データベースには約 57 個のテーブルがあります。解決策を教えてください。
前もって感謝します。
JOIN句を使用できます。
SELECT table_1.name, table_2.salary, table_3.bonus
FROM employee AS table_1
INNER JOIN info AS table_2 ON table_1.name = table_3.name;
INNER JOIN account as table_2 On table_2.salary = table_3.salary
...
...
...
テーブルを結合したいようです。例えば:
SELECT *
FROM table1
INNER JOIN Table2
ON Table1.table1ID = table2.table1ID
LEFT JOIN Table3
ON Table2.Table2ID = table3.table2ID;
残念ながら、57 個のテーブルすべてからデータが必要な場合は、57 個すべてを JOIN する必要があります。
あなたが使用した構文(ANSI 89)は、一般的には回避するのが最善ですが(Oracleがこれらをより適切に最適化する場合があると思います)、ANSI 92結合はユーザーエラーが発生しにくく、(ほとんどの人にとって)より読みやすいですJOIN 条件がテーブルの直後に来るためです。Aaron Bertrand は、ANSI 89 ではなく ANSI 92 構文を使用する理由について、優れた記事を書いています。
すべてのテーブルに同じ数の列がある場合は、UNION クエリを使用できます。
SELECT * FROM Table1 WHERE (condition)
UNION ALL
SELECT * FROM Table2 WHERE (condition)
UNION ALL
SELECT * FROM Table3 WHERE (condition)
UNION ALL
...