質問: B.b_id group by A.id; ``` * テーブル |A.id|A.name| |C.id|C.d_id| |D.id|D.a_id|
回答: 前提を確認させてください。 A (hasMany)-> C (hasMany)-> Dという順番で結合しています。 CテーブルはAとDを繋ぐためのテーブル Dテーブルはワークテーブル ですね! CREATE TABLE `A_muster` ( `id` int(11) NOT NULL, `name` varchar(48) DEFAULT NULL, PRIMARY KEY (`id`) ) CREATE TABLE `C_tbl` ( `a_id` int(11) NOT NULL, `d_id` int(11) DEFAULT NULL, PRIMARY KEY (`a_id`) ) CREATE TABLE `D_trn` ( `trn_id` int(11) NOT NULL, `id` int(11) DEFAULT NULL, PRIMARY KEY (`trn_id`) ) サンプルのデータ `A_muster` id name 1 NM1 2 NM2 3 NM3 4 NM4 5 NM5 `C_tbl` a_id d_id 1 11 2 12 3 13 4 14 5 15 `D_trn` trn_id id 101 11 102 11 103 12 104 13 105 14 106 14 これからAに対するDの数は SELECT A.id, A.`name`, count(D.id) FROM A_muster AS A inner JOIN C_tbl AS C ON A.id = C.a_id left JOIN D_trn AS D ON C.d_id = D.id group BY A.id で Aid A.名称 D.件数 1 NM1 2 2 NM2 1 3 NM3 1 4 NM4 2 5 NM5 0 もしも 0件を 数えないなら SELECT A.id, A.`name`, count(D.id) FROM A_muster AS A inner JOIN C_tbl AS C ON A.id = C.a_id inner JOIN D_trn AS D ON C.d_id = D.id group BY A.id ですが いかがでしょうか cakePHP3では use Cake\Datasource\ConnectionManager; execute($sql)->fetchAll('assoc'); foreach ($query as $row) { ?> = $row['id'] ?> = $row['name'] ?> = $row['cnt'] ?> で できます。