我需要一個SQL查詢以下複雜的任務......選擇和列表的孩子和家長
我需要從一個名爲parent_id
列選擇。如果parent_id
的行有0,這意味着它是一個類別(它也有type
列,說cat
類別),如果一行有1個或更多的parent_id
這意味着它是一個規則。規則的parent_id
是一個類別的rule_id
。
表結構與它的一些數據:
我需要的方式來選擇,即每個類別中,都有孩子在它之下。從圖片我們會得到這個:
Sample Category 1
Sample rule 1
Sample Category 2
我嘗試了一些查詢,我從這裏找到,但沒有工作。
這是我最後一次嘗試:
'SELECT *
FROM ' . RULES_TABLE . ' AS parent
LEFT JOIN ' . RULES_TABLE . ' AS child
ON child.parent_id = parent.rule_id
WHERE parent.parent_id = 0
AND parent.public = 1
ORDER BY parent.cat_position, child.rule_position';
它返回採樣規則僅1。
想法?
你不能這樣做,在SQL中使用一個單一的查詢,如果這是你在問什麼?請具體而言,你可以通過對規則的類別和子查詢進行查詢,甚至可以在單個查詢中進行查詢,前提是您可以在結果中沒有規則的情況下犧牲類別,並接收每個規則的類別名稱,或者不用犧牲串聯的空類別(使用逗號或您選擇的某個字符)規則名稱 – xception
我可以通過將查詢置於旁邊由另一個查詢創建的循環,但這不是建議,我不應該這樣做。這就是爲什麼我在這裏問的一個可接受的解決方案,它不包含循環查詢。 – Aborted
如果您有一個不包含循環查詢的解決方案,請將其發佈。 – Aborted