1
我需要通過連接三個mysql表創建一個垂直菜單。如何通過連接查詢從三個表中選擇所有匹配的行
這是正常的菜單應該。
Main Cat Items 1 -> Categories 1 --> Sub Cat Items 1
Categories 1 --> Sub Cat Items 2
Categories 2 --> Sub Cat Items 3
Categories 3 --> Sub Cat Items 4
Main Cat Items 2 -> Categories 4 --> Sub Cat Items 5
這是三個表我有 表:Main_cat
+-------------+---------------+
| main_cat_id | main_cat_name |
+-------------+---------------+
| 1 | main cat 1 |
| 2 | main cat 2 |
| 3 | main cat 3 |
+-------------+---------------+
表:類別
+--------+-------------+----------------+
| cat_id | main_cat_id | cat_name |
+--------+-------------+----------------+
| 1 | 1 | cat1 parent 1 |
| 4 | 1 | cat2 parent 1 |
| 5 | 1 | cat3 parent 1 |
| 6 | 2 | cat 4 parent 2 |
| 7 | 2 | cat 5 parent 2 |
| 8 | 3 | cat 6 parent 3 |
+--------+-------------+----------------+
表:Sub_cat
+------------+-------------+--------+----------------------+
| sub_cat_id | main_cat_id | cat_id | sub_cat_name |
+------------+-------------+--------+----------------------+
| 1 | 1 | 1 | sub 1 cat1 parent 1 |
| 2 | 1 | 1 | sub 2 cat1 parent 1 |
| 3 | 1 | 4 | sub 3 cat 4 parent 1 |
+------------+-------------+--------+----------------------+
每次我嘗試我上午只有一個數組有一些字段,但我期望的是一個malty維數組。這些是我試過的問題。
這是我通過以下查詢獲得的數組之一。
Array
(
[0] => stdClass Object
(
[main_cat_name] => main cat 1
[main_cat_id] => 1
[main_cat_url] =>
[cat_id] => 1
[cat_name] => cat1 parent 1
[cat_url] =>
[sub_cat_id] => 1
[sub_cat_name] => sub 1 cat1 parent 1
[sub_cat_url] =>
)
[1] => stdClass Object
(
[main_cat_name] => main cat 2
[main_cat_id] => 2
[main_cat_url] =>
[cat_id] =>
[cat_name] =>
[cat_url] =>
[sub_cat_id] =>
[sub_cat_name] =>
[sub_cat_url] =>
)
[2] => stdClass Object
(
[main_cat_name] => main cat 3
[main_cat_id] => 3
[main_cat_url] =>
[cat_id] =>
[cat_name] =>
[cat_url] =>
[sub_cat_id] =>
[sub_cat_name] =>
[sub_cat_url] =>
)
)
$query = "SELECT "
. "mc.main_cat_name, mc.main_cat_url, cg.cat_name, cg.cat_url, sc.sub_cat_name, sc.sub_cat_url "
. "FROM"
. " main_cat AS mc "
. "LEFT JOIN "
. "categories AS cg "
. "ON "
. "mc.main_cat_id = cg.main_cat_id "
. "LEFT JOIN "
. "sub_cat AS sc "
. "ON "
. "cg.cat_id = sc.sub_cat_id ";
$query = "SELECT "
. "mc.main_cat_name, mc.main_cat_id, mc.main_cat_url, cg.cat_id, cg.cat_name, cg.cat_url, sc.sub_cat_id, sc.sub_cat_name, sc.sub_cat_url "
. "FROM"
. " main_cat AS mc "
. "LEFT JOIN "
. "sub_cat AS sc "
. "ON "
. "sc.main_cat_id = mc.main_cat_id "
. "LEFT JOIN "
. "categories AS cg "
. "ON "
. "cg.cat_id = sc.cat_id "
. "GROUP BY "
. "main_cat_id";
$query = "SELECT "
. "* "
. "FROM "
. "main_cat mc "
. "LEFT JOIN sub_cat sc "
. "ON sc.main_cat_id = mc.main_cat_id "
. "LEFT JOIN categories cg "
. "ON "
. "cg.cat_id = sc.cat_id "
. "Group BY "
. "sc.cat_id, sc.main_cat_id";
但非這些查詢給了我所期待的。你能幫我解決這個問題嗎?
對不起,延遲迴復。昨天我不在辦公室。現在我可以從db中正確地獲取所有項目。我會盡量使它適合我的菜單。非常感謝你。 – Yasitha 2014-11-04 04:59:57
我試圖刪除重複,但我仍然無法做到。如果你能給我一些幫助,那對我來說會是一種拯救生命。 :) – Yasitha 2014-11-04 09:18:43