-1

私はmysqlベースのプロジェクトに取り組んでいます。複数のテーブルからデータを見つける必要があります。私は検索して、次のような解決策を見つけました

SELECT * from table_1, table_2 where (condition)

しかし、このような解決策は少数のテーブルには問題なく、データベースには約 57 個のテーブルがあります。解決策を教えてください。

前もって感謝します。

4

3 に答える 3

0

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
...
...
...
于 2013-02-20T08:24:18.657 に答える
0

テーブルを結合したいようです。例えば:

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 構文を使用する理由について、優れた記事を書いています。

于 2013-02-20T08:19:44.180 に答える
0

すべてのテーブルに同じ数の列がある場合は、UNION クエリを使用できます。

SELECT * FROM Table1 WHERE (condition)
UNION ALL
SELECT * FROM Table2 WHERE (condition)
UNION ALL
SELECT * FROM Table3 WHERE (condition)
UNION ALL
...
于 2013-02-20T08:50:42.597 に答える