我有小孩的表culmon獲得總孩子的項目構成表時,MySQL/PHP的
如果孩子culmon = 0,所以它的主要項目,否則
的項目是其他項目
的孩子表項目:
-------------------------------
id | title | child
1 | A main item 1 | 0
2 | B main item 2 | 0
3 | K child of item_2 | 2
4 | R child of item_1 | 1
5 | Q child of item_1 | 1
--------------------------------
我想要一個查詢得到這樣的數據,如果有可能:
---------------------------------
+ Main item 1 (total 2 childs)
- R
- Q
+ Main item 2 (total 1 child)
- K
我做了很多搜索,但我沒有得到它! 我可以使用加入,如果有兩個表,但我不知道我該怎麼做,如果我只使用一個表..嗯,任何幫助將是最感激..
* 編輯..我做這樣的:*
我的表是這樣的:
-------------------------------
id | title | child
1 | main_item1 | 0
2 | main_item2 | 0
3 | child item | 1
4 | another child item | 1
5 | child for main2 | 2
--------------------------------
查詢:
SELECT *
FROM `items` AS `t1`
INNER JOIN `items` AS `t2`
WHERE `t1`.`child` = `t2`.`id` and t2.user_id = $user_id
,我得到這個:
-main_item_1
-main_item_1
-main_item2
有幫助嗎?
------------------------已解決! --------------------------------------------
對不起我不能回答我的問題,所以我編輯我的問題在這裏..
謝謝你們的幫助..
,並感謝@Shi(我爲他的代碼變更:))
我只是做了這個簡單的查詢,以獲得我的所有主要項目和每個主要項目的兒童總數..像這樣:
SELECT *,
(SELECT COUNT(1)
FROM `items`
WHERE child = t1.id)
AS total_childs
FROM `itmes` AS `t1`
where `t1`.`child` = 0
GROUP BY t1.id
,我得到的數據是這樣的:
- main_item1(總小孩:2)
- main_item2(總小孩:1)
然後我做了另外一個查詢來獲取所有項目(兒童項目)
和內部模板頁面我只是寫IF語句來獲取每個項目的子項 有些事情(我使用Smarty模板);
{foreach from=$items item=i}
{$i.title} (total children : {$i.total_childs})
// did another foreach to get children
{foreach from=$children item=c}
{if $c.child eq $i.id}
<li> {$c.title} </li>
{/if}
{/foreach}
{/foreach}
當然
,如果有更好的方式來做到這一點,這是很好,如果有人幫助我們再次:)
感謝..
艾哈邁德:你的內在加入看起來不錯,雖然我更喜歡ON而不是WHERE。如果你對結果不滿意,你應該爲每個樹高添加一個INNER JOIN到你的查詢。 – Bytemain