記事の中でなぜアレル?、作者は問題を提起します:
ユーザーテーブルと写真テーブルがあり、すべてのユーザーデータとユーザーが作成した写真の*カウント*を選択するとします。
彼が提案した解決策(改行を追加)は次のとおりです。
SELECT users.*, photos_aggregation.cnt
FROM users
LEFT OUTER JOIN (SELECT user_id, count(*) as cnt FROM photos GROUP BY user_id)
AS photos_aggregation
ON photos_aggregation.user_id = users.id
そのようなクエリを書こうとしたとき、私は思いついた
select users.*, if(count(photos.id) = 0, null, count(photos.id)) as cnt
from users
left join photos on photos.user_id = users.id
group by users.id
(if()
列リストのは、ユーザーが写真を持っていないときに同じように動作するようにするためのものです。)
記事の著者は続けて言います
これを書く方法を知っているのは高度なSQLプログラマーだけです(私は就職の面接でこの質問をよくしますが、誰もがそれを正しく理解しているのを見たことがありません)。そして、それは難しいことではありません!
私は自分自身を「高度なSQLプログラマー」とは考えていないので、微妙な何かが欠けていると思います。私は何が欠けていますか?