我有兩個表,A和B,A包含條目列表和B爲每個條目多個狀態行(0-n,按日期分組,狀態爲0爲好,1失敗)。狀態表加入多個狀態
現在我想從A中選擇所有行,分別列出它們各自的最新狀態和日期以及最近的故障和日期(故障定義爲至少有一個條目爲1)。
我試過的東西兩個沒有加入,但我不認爲它是最佳的解決方案,也仍然有問題與確定故障的正確數量(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
非常感謝。這似乎是訣竅。我的第二次加入顯然不完整。 – user1616166
是的,問題是,如果b1返回2行,而b2返回2行,則會得到4行,失敗次數會加倍。或者如果你有3行,它可以是三倍,等等。以上,b2只返回一行。 – Tom