2009-09-17 7 views
0

多少複雑なSQLクエリを実行したいと思っています。私がする必要があることの周り。私は自分の状況で動くJOINを理解できないようです。(SQLクエリ、電子メール)同じテーブルのフィールドに基づいて「スレッドアイテム」を検索するクエリが必要です

基本的に私の問題は、さまざまなヘッダーが分離されたEMAILオブジェクトのテーブルがあり、スレッド化を実装しようとしていることです。 - から(ものとされている可能性が高いスレッドスターター )すべての項目を選択

1)は、「IN-REF-TO」の値を持っていないすべての項目を選択します。私の推定では、私は次の操作を行う必要があります同じテーブル)日付別のフィールド

3)ため、「TO IN-REF-」以前に見つかった「REF-NUM」の彼らの内部のいずれかを持っている...私はこの部分を扱うことができると思います= P

すべてのデータを1つのレコードセットに戻したいのですが、私は完全な提案をしています。 SQLでループすることはできますか?もし誰かがこれがそれについて行く方法ではないと感じたら、是非、いくつかの他の仕組みを提案してください。記録のために、私はデータベースを設計しておらず、今後6ヶ月ほどで構造が変更される可能性はほとんどありません。

+1

DB構造、サンプルデータ&それがDBの種類(SQL /オラクル/ MySQLを)投稿してください? – shahkalpesh

+0

あなたの以前の質問に対していくつかの回答を受け入れるのはいいでしょう。 – RedFilter

+0

はい、私は戻ってそれらのいくつかを見直す必要があります。しかし、多くの人は質の高い回答を得られませんでした。 –

答えて

0

このような何かがあなたのために働く可能性があります

select * 
from Email 
order by coalesce(IN-REF-TO, REF-NUM) desc, CREATE-DATE 

それは(REF-NUMSは昇順で作成されたと仮定した場合)、最新トピックを最初に一覧表示されます、そして、次の昇順にその回答が続き、話題など

トピック開始者である場合は、IN-REF-TOにNULL値があるとみなします。そうでない場合は、オーダーを変更する必要があります。あなたが詳細を投稿するときに私はそうすることができます。

編集:

[OK]を、このような何かを試してみてください。

select e1.* 
from Email e1 
left outer join Email e2 on e1.IN-REF-TO like '%' + e2.REF-NUM + '%' 
order by coalesce(e2.REF-NUM, e1.REF-NUM), CREATE-DATE 
+0

そのポストをありがとう。 IN-REF-TOのことは、REPLYごとに大きくなることです。実際には数値ではなく文字列です。 REF-NUMが文字列に含まれているかどうかを確認するには、「LIKE REF-NUM」が必要です。 –

関連する問題