AとBの2つのテーブルがあり、Aにはエントリのリストが含まれ、Aにはエントリのリストが含まれ、Bには複数のステータス行(0-n、日付でグループ化され、ステータスは正常、1は失敗)が含まれます。
ここで、Aからすべての行を、それぞれの最新のステータスとその日付、および最新の障害とその日付(1で少なくとも1つのエントリがあると定義された障害)とともに選択したいと思います。
2つの左結合で何かを試しましたが、それが最適な解決策であるとは確信していません。また、正しい失敗数を決定する際にも問題があります(SUM(b2.status))
SELECT a.id, b1.date, SUM(b1.status), b2.date, SUM(b2.status) FROM tablea a
LEFT JOIN tableb b1 ON b1.aid=a.id
LEFT JOIN tableb b2 ON b2.aid=a.id
WHERE (b1.date=(SELECT MAX(`date`) FROM tableb WHERE aid=a.id) OR b1.date IS NULL)
AND (b2.date=(SELECT MAX(`date`) FROM tableb WHERE aid=a.id GROUP BY `date` HAVING SUM(`status`)>0) OR b2.date IS NULL)
GROUP BY a.id