personとevent_registrationの2つのリレーショナルテーブルがあり、10以下のイベントに登録したすべての人を選択したいと思います。正しいと思われるクエリを見つけました。次のクエリでこれらの人物を見つけることができます。
SELECT person_id
FROM event_registration
GROUP BY person_id
HAVING COUNT(*) <= 10
event_registration.person_idは、person.idと一致するテーブル行に関連していることに注意してください。ここで、personテーブルを検索するこのクエリを使用したいのですが、私のクエリはmysqlをクラッシュさせるようです。なんで?
SELECT id
FROM person
WHERE id IN (
SELECT person_id
FROM event_registration
GROUP BY person_id
HAVING COUNT(*) <= 10
)
クエリを変更したい理由は、他のプロパティも検索するためです。したがって、(より近い)最終的なクエリは次のようになります。
SELECT *
FROM person
WHERE name LIKE '%something%'
AND AGE > 20
AND id IN (
SELECT person_id
FROM event_registration
GROUP BY person_id
HAVING COUNT(*) <= 10
)
もちろん、mysqlがクラッシュするように見えるため、これは機能しません。私は何が間違っているのですか?