2 つのクエリを作成する代わりに、houses.owner_id が 0 より大きい場合、どうにかして人に参加できますか?
SELECT * FROM houses
INNER JOIN persons ON persons.id = houses.owner_id
WHERE houses.id = id
条件を結合の条件に移動します。
SELECT * FROM houses
JOIN persons ON persons.id = houses.owner_id
AND houses.owner_id > 0
WHERE houses.id = id
これは、owner_id > 0 の場合にのみ参加します。
結合されたデータを使用していないため、このクエリは少し奇妙です。
試す:
SELECT * FROM houses
INNER JOIN persons ON persons.id = houses.owner_id
WHERE houses.id = id AND houses.owner_id > 0
owner_id が 0 より小さい理由がわかりませんか? データベースの設計が悪いのかもしれません。またSELECT *
、悪い習慣と見なされます。列を明示的に記述してください。
count of house.owner_id > 0 を使用する必要があります。group by 句が必要です。また、これは適切な SQL 設計ではありません。
where条件として渡してみませんか?
SELECT * FROM houses
INNER JOIN persons ON persons.id = houses.owner_id
WHERE houses.id = id AND houses.owner_id > 0
他の答えはおそらくあなたが望むものですが、完全を期すために、JOIN
句を調整することをお勧めします。
SELECT * FROM houses
INNER JOIN persons ON persons.id = houses.owner_id AND houses.owner_id > 0
WHERE houses.id = id