1
私は、各タイプの国、州、地域、町を持つカテゴリテーブルを持っています。アイテムの親は、それが位置する地域、州または国です。次に、それらのIDを持つオブジェクトを持つテーブルがあります。特定のカテゴリとオブジェクトが公開されているかどうか。1つのクエリ内の1つのテーブルのSQLサブグループ
table: category
id title parent type published
75 Spain 0 1 1
76 Mallorca 75 2 1
144 North 76 3 1
149 South 76 3 1
148 East 76 3 1
147 West 76 3 1
170 Cala 144 4 1
195 Puebla 144 4 0
166 Pica 149 4 1
189 Playa 148 4 0
199 Santa Ana 148 4 1
247 Puerto 147 4 1
...
table: objects
id title country_id state_id region_id town_id published
4 Alba 75 76 149 195 1
5 Gris 75 76 144 170 1
8 Casa 75 76 148 199 1
8 Pueblo 75 76 147 247 1
8 Don Carlo 75 76 148 199 1
...
結果は、各国、州、地域、町のオブジェクトの正しい数でカテゴリタイプごとにグループ化された名前のリストにする必要があります。
id title parent type obj_count
75 Spain 0 1 12
76 Mallorca 75 2 4
144 North 76 3 2
149 South 76 3 3
148 East 76 3 0
147 West 76 3 1
170 Cala 144 4 0
166 Pica 149 4 1
189 Playa 148 4 0
195 Puebla 144 4 1
247 Puerto 147 4 1
199 Santa Ana 148 4 2
and so on...
私がこれまで持っているクエリは、正しい順序で名前の完全なリストを返しますが、私はWHERE ob.published = 1」をチェックしてみたら、町のために(未発表を含む)が、唯一のフルカウントAND c.published = 1 'は、国、州、地域ではなく町を返します。
SELECT
c.id as id, c.title as title, c.type as type, c.parent as parent,
count(ob.town_id) as obj_count
FROM category AS c
LEFT JOIN category AS r ON c.id = r.parent
LEFT JOIN category AS u ON r.id = u.parent
LEFT JOIN category AS o ON u.id = o.parent
LEFT JOIN objects AS ob ON ob.town_id = c.id
WHERE 1
GROUP BY type, id, parent
ORDER BY parent, title
私はこれを1つのクエリで行うことができますか?ありがとうございました。
あなたはカウントする必要がありますか? –