2012-03-26 10 views
2

SQLの場合は初心者ですので、これが明らかであれば私を許してください。MySqlは同じテーブルに結合します

私がここで見つけたすべての回答を見て、それらを自分のデータで動作させるように修正しようとしましたが、何らかの理由で結果が正しくないことがあります。

私は単純に親を持つ順序付きリスト(parent_idは0のレコード)のデータを抽出し、各レコードはその下位の兄弟としたいと考えています。

私はまだ十分な長さではなかったが、私のテーブル構造はかなりシンプルなので、画像を投稿することはできません。

id, subject, parent_id 

サブジェクトのparent_idはゼロです。

おかげ

スティーブ

PS:私は、このソリューションを試してみましたが、それは私のために正常に動作しませんでした。 join with same table in mysql?

+0

ような何か?あなたは説明できますか? –

+0

私はparent_idでグループ化されたすべてのサブジェクトを返します。親はparent_idが0なので、parent1-> parent1の最初の子 - > parent1の2番目の子のようになります。これはすべての親に対して繰り返されます。 – SteveF

答えて

1

このテーブルから出力希望されているもの

SELECT p.subject AS parent, 
group_concat(c.subject) AS children 
FROM yourtable AS p 
LEFT JOIN yourtable AS c 
ON (p.id = c.parent_id and p.parent_id = 0) 
GROUP BY p.id;` 
+0

あなたの提案を試してみましたが、データは返されませんでした。ちょうど空のレコードセット。 – SteveF

+0

ああ待って、申し訳ありませんが、結合条件でタイプミスがありました。やってみよう。 – KernelM

+0

私は少しあなたの提案を変更し、それは働いたが、それは子供を持たない親を返しませんでした。 'pを親として選択する、group_concat(cject)をサブジェクトとしてサブジェクトとしてサブジェクトをcと結合する(p.id = c.parent_idおよびp.parent_id = 0)group by p.id' – SteveF

1

EXACTと必要な

AS
select s1.id, s2.name from tab1 s1 LEFT JOIN tab1 s2 on s1.id = s2.parent 
+0

私はあなたの提案を試みたが、うまくいかなかった。それはちょうど3つの親を引っ張って、そのうちの1つは重複していた。 – SteveF

+0

@ user1292262ちょっと、私はそれをチェックアウトしました、私はそれをテストしました、それはうまく働いています –

+0

私は少しあなたの提案を変更し、それは働いたが、それは子供なしで親を返しませんでした。 'pを親として選択する、group_concat(cject)をサブジェクトとしてサブジェクトとしてサブジェクトをcと結合する(p.id = c.parent_idおよびp.parent_id = 0)group by p.id' – SteveF

関連する問題