2017-04-03 2 views
2

こんにちは、これは私の最初の質問ですので、私には簡単に行く - いくつかのデータを抽出するいくつかの助けが必要です。 問い合わせテーブル:SQL初心者 - サブクエリ

Tは、顧客が会社に問い合わせを送信した場合、顧客とCへの問い合わせを送る会社の略
+---------------------------------------------------------------------+ 
| ID (Primary Key) | Author | threadid | created  | Comments  | 
+---------------------------------------------------------------------+ 
| 1    | C | 237  | 2016-07-24 | Hi there... | 
| 2    | T | 421  | 2015-06-07 | Hello, ..  | 
| 3    | C | 421  | 2015-06-08 | Hi,...   | 
| 4    | C | 327  | 2017-03-13 | Hey there.. | 
+---------------------------------------------------------------------+ 

これらは私が働いている二つのテーブルです。

Enquirythreads表:

+----------------------------------+ 
| ID (Primary Key) | created  | 
+----------------------------------+ 
| 421    | 2016-07-24 | 
| 237    | 2016-07-24 | 
| 327    | 2015-06-08 | 
+----------------------------------+ 

私は希望の出力は次のようになります。

+---------+ 
| ID  | 
+---------+ 
| 421 | 
+---------+ 

私が望むすべてenquirythreadのID、それに関連付けられた最初の問い合わせによって作られていることな著者T

これは私のコードですが、動作していない:事前に

SELECT enquirythreads.id 
FROM enquirythreads 
JOIN enquiries on enquirythreads.id = enquiries.threadid 
WHERE enquiries.threadid IN 
    (SELECT enquiries.threadid as enqid 
     FROM 
      (SELECT enquiries.threadid, min(enquiries.created) as mincreated 
      FROM enquiries 
      WHERE enquiries.author = 'T' 
      GROUP BY enquiries.threadid) x 

    ) 

おかげ

+1

使用しているデータベースとのあなたの質問にタグを付けてください。 –

+0

クエリが失敗する理由の1つは、 'min(enquiries.created)'を選択していて、あなたはそれを使用していないということです。 –

+0

@ThorstenKettnerああ、なぜ今は動作しないのか分かっていると思う - ありがとう! – Tauseef

答えて

1

一つの方法は、使用して集約し、having

select e.threadid 
from enquiries e 
group by e.threadid 
having min(e.created) = min(case when e.author = 'T' then e.created end) 

これは言う:「早いことを確認してくださいcreatedの日付は、'T'の最古の日付と同じです。

もう一つの方法は、where句で相関サブクエリを使用しています。

select et.threadid 
from enquirythreads et 
where (select e2.author 
     from enquiries e2 
     where e2.threadid = et.threadid 
     order by e2.created asc 
     fetch first 1 row only 
    ) = 'T'; 
+0

こんにちはGordon - 最初のコードは完璧に動作します。 – Tauseef