0

T1 と T2 の 2 つのテーブルがあります。

T1 には、列 A1、B1、および C1 が含まれます。A1 は T1 の一意のインデックスです。

T2 には列 A1 と awesome_data が含まれています。A1 はこのテーブルで一意ではありません。このテーブルには、各 A1 の「awesome_data」の行が多数保持されます。T1 からのすべての情報と、T2 での A1 の出現回数を返すクエリが必要です。

だから私はこれを持っている場合:

T1:
row(A1 = 1, B1 = 'monkey', C1 = 'horsies'),
row(A1 = 2, B1 = 'super mario', C1 = 'satan'),
row(A1 = 3, B1 = 'monkey', C1 = 'hello world')

T2:
row(A1 = 2, awesome_data = 'adsfasd22f32'),
row(A1 = 1, awesome_data = '3f23fsf3a3'),
row(A1 = 1, awesome_data = 'f3af3afaa3fa2')

次の結果になるクエリが必要です。

enter code here

array(
0 => array('A1'=>1,'B1'=>'monkey','C1'=>'horsies','T2_count'=>2),
1 => array('A1'=>2,'B1'=>'super mario','C1'=>'satan','T2_count'=>1),
2 => array('A1'=>3,'B1'=>'monkey','C1'=>'horsies','T2_count'=>0)
);

助言がありますか?これをできるだけ明確にしようとしました。リレーショナル テーブルの概念を伝える適切な方法に慣れていません。

4

1 に答える 1

0
SELECT
    T1.*,
    COUNT(T2.A1) AS `Total`
FROM T1
LEFT JOIN T2 ON T1.A1 = T2.A1
GROUP BY T1.A1

こちらが

SQL フィドルのデモ

于 2013-04-17T19:14:08.697 に答える