我有4個表A,B,C & d如下:
B belongs to A
B belongs to C
&
C has many D
導軌查詢 - 有條件加入
作爲 'A' 可以或可以不具有任何B的但如果有一個B,那麼B必須有一個C.根據我的邏輯,C將至少有一個D或更多。
現在,我想列出A的計數(b)以及計數(d)。這裏計數(b)和計數(d)可能爲零。
所以我在做什麼至今如下:
@a = A.joins(bs: {c: :ds}).select("a.*, count(b) as count_b, count(d) as count_d").group("a.id")
但最終這是行不通的,因爲它INNER JOIN
b
與a
。這意味着,如果a
沒有相應的b
,那麼a
將不在列表@a
中。那就是問題所在。
那麼,有沒有辦法做到這一點?
你說得對。如果只有A和B,它就可以工作。但我不知道,哪一個適用於B/C,C-CD和CD-D。我希望,我在解釋時並沒有模棱兩可。 –
你可以嘗試修改後的解決方案(並告訴我如果沒有工作是什麼問題) – pshoukry
其實我早些時候嘗試過,但沒有奏效。我試過'@a = A.joins(「A.id = B.a_id上的LEFT JOIN B C.id = B.c_id上的LEFT JOIN CD C.id = CD.c_id上的LEFT JOIN CD LEFT JOIN D. ID = CD.d_id「)'而不是爲我工作。 –