0

MySQL db 構造に関して興味深い状況があります。

table_Main、table_sub_A、table_sub_B の 3 つのデータベース テーブルがあるとします。

「table_Main」フィールド:

  • 行 ID
  • コード (このフィールドは、「table_sub_」テーブルを検索するために使用されます
  • 名前

「table_Main」行の例:

1,A,Test A
2,B,Test B

ここで、table_Main からすべての行を取得するだけでなく、table_Main 行ごとに対応するテーブルから count(*) を取得する SQL クエリを作成したいと考えています。

SELECT *, (SELECT COUNT(*) FROM table_sub_XXXX) AS TotalRecords  FROM table_Main

問題はここから始まります。XXXX は、対応する各 table_Main 行の「コード」列の値である必要があります。サブセレクトクエリ内で動的テーブル名を生成するにはどうすればよいですか?

ご協力いただきありがとうございます。

4

1 に答える 1

1

できません

SELECT
   *,
   (SELECT COUNT(*) FROM table_sub_A) AS TotalRecordsA, 
   (SELECT COUNT(*) FROM table_sub_B) AS TotalRecordsB
FROM
   table_Main

ただし、MySQLはこれを行ごとに評価する場合がありますtable_Main

だから私はクエリオプティマイザーを助けるためにこれをします

SELECT
   *, TotalRecordsA, TotalRecordsB 
FROM
   table_Main
   CROSS JOIN
   (SELECT COUNT(*) AS TotalRecordsA FROM table_sub_A) A
   CROSS JOIN
   (SELECT COUNT(*) AS TotalRecordsB FROM table_sub_B) B
于 2012-11-08T14:11:52.657 に答える