次の4つの表を考慮する
entity table1 table2 table3
------ ------------- ------------- -------------
id ei(entity.id) ei(entity.id) ei(entity.id)
name something somethingelse yetanother
次のように表される、3つのテーブルすべてでエンティティの使用法を把握するにはどうすればよいですか
---------------------
| id | t1 | t2 | t3 |
---------------------
| 1 | 14 | 23 | 0 |
| 2 | 66 | 9 | 5 |
...
私の元のアプローチは、エンティティから選択してから他のテーブルに参加することでしたが、MySQLはそれを好まないようです
SELECT e.id,count(t1.id) FROM entity AS e LEFT JOIN table1 AS t1 on e.id=t1.ei;
編集:これは1つのテーブルの出力です
mysql> 説明 select e.id,count(o.id) from entity e left join table1 t1 on e.id=o.ei where e.ty=3; +----+-------------+-------+------+--------------- +------+---------+------+-------+-------------+ | | ID | select_type | テーブル | タイプ | 可能な_キー | キー | key_len | 参照 | 行 | 行 エクストラ | +----+-------------+-------+------+--------------- +------+---------+------+-------+-------------+ | | 1 | シンプル | e | すべて | ヌル | ヌル | ヌル | ヌル | 1083 | where | の使用 | | 1 | シンプル | を | すべて | ヌル | ヌル | ヌル | ヌル | 90201 | | | +----+-------------+-------+------+--------------- +------+---------+------+-------+-------------+ 2行セット (0.04秒)
反対のほうがはるかにうまく機能しますが、複数のテーブルに拡張することはできません
SELECT e.id,count(t1,id) FROM table1 AS t1 LEFT JOIN entity AS e ON t1.ei=e.id