2009-08-11 18 views
0

フィールド(id、parent_id、name、created_at)を持つテーブルがあります。 id、name、created_at、parent_created_atを選択するためのクエリを作成したいと思います。 'parent_created_at'は、parent_created_atフィールドがparentに一致するレコード( 'parent_id> 0'のレコード)の場合は 'created_at'フィールド、それ以外の場合は 'parent_created_at'フィールドがnullになります。助言がありますか?ANSI SQLの質問

答えて

0

自己が、+ ANSI SQLのCASE式

SELECT t.id 
     , t.name 
     , t.created_at 
     , CASE WHEN t.parent_id > 0 THEN p.created_at ELSE NULL END AS parent_created_at 
FROM Table t 
JOIN Table p 
ON  t.id = p.parent_id 
+0

ない私が予想かなり結果: MySQLの>を選択しt.id、t.title、t.created_at、u.name、CASE P AS> 0 t.parent_idその後、ELSE p.created_at NULL END arent_created_at from user u、table t結合テーブルp on t.id = p .parent_idここで、t.creator_id = u.id; 私はテーブル 'テーブル' 1に2つのレコードを持ち、parent_idsはそれぞれ0と1です。私は両方の行が表示されることを期待しました。 parent_id = 0の行だけが表示されます..? *スクラッチヘッド* –

+0

どうぞ。あなたの頭を掻くのではなく、あなたの二列テーブルのすべての細部を与えるのはどうですか?それには約10秒かかります。皆さんの時間を無駄にすることはありません。 –

+0

@Morpheousと@Svetlozar:(ちょっと残った外部の仲間はあなたが必要なものですが、それでもいくつかの詳細を与えるのは普通の礼儀です) –

0

Morpheous参加

あなただけのテーブル内の2つの行を持っているので、すべての詳細を与えるために手間をかけてください!あなたが教えていることは、parent_idが何であるかであり、クエリの結合条件はそれ以上に依存します。

はそんなに下に、我々はフル詳細を知っている...で埋めることはできますか?

CREATE TABLE t(... 
INSERT INTO t VALUES (... 
INSERT INTO t VALUES (...