2

SQL初心者なのでよろしくお願いします。データベースを調べてExcelにエクスポートすることで、すべての情報を取得できます。エクセルに入ったら、フォーラムを作成して、思い通りに仕上げる必要があります。可能であれば、クエリを実行してすべてを確認したいと思います。私はグーグルで検索しましたが、私にとって意味のあるもの、または正しい方向に向けるものを見つけることができないようです.

私の検索では、何らかの結合があると思いますが、SQL に慣れていないので、ストローをつかんでいます。

次のサンプル テーブルがあるとします。

チケット表:

ID    Queue  Owner  Subject            Status    TimeWorked    LastUpdated
001   1      22     need help          Open      20            2012-09-01
002   2      6      internet           Resolved  60            2012-09-03
003   1      24     email not working  Open      15            2012-09-04

ユーザー テーブル:

ID    Name
6     Nobody
22    Josh
24    Jon

CustomFieldValue テーブル:

Id      ObjectId    CustomField    Content
01      001         1              Bob Inc
02      001         2              0
03      001         3              WaitingOnClient
04      001         4              Remote
05      002         1              ZYC Inc
06      002         2              15
07      002         3              WaitingOnClient
08      002         4              Remote
09      003         1              ACB Inc
10      003         2              0
11      003         3              TimeScheduled
12      003         4              OnSite

キュー テーブル:

ID    Name
1     Support
2     Tier2

私ができる必要があるのは、次のような結果を得るためにクエリを実行することです

ID  Client  Subject   Queue    Owner  Status    Type   BTime CustomStat      LastUpdate NT
001 Bob Inc need help support  Josh   open      Remote 20    WaitingOnClient 2012-09-01 0
001 ZYC Inc internet  Tier2    Nobody Resolved  Remote 60    WaitingOnClient 2012-09-01 15
001 ACB Inc email     support  Jon    open      onsite 15    TimeScheduled   2012-09-01 0

どんな助けでも大歓迎です。

前もって感謝します

4

1 に答える 1

2

これにはインライン CASEステートメントを使用する必要があり、GROUP_CONCATによってグループ化する必要がありますID。これを試してみてください。

SELECT  a.ID,
        GROUP_CONCAT((CASE WHEN d.CustomeField = 1 THEN d.content ELSE NULL END)) `Client`,
        a.Subject,
        c.Name,
        b.Name Owner,
        a.`Status`,
        GROUP_CONCAT((CASE WHEN d.CustomeField = 4 THEN d.content ELSE NULL END)) `Type`,
        a.TimeWorked,
        GROUP_CONCAT((CASE WHEN d.CustomeField = 3 THEN d.content ELSE NULL END)) `CustomStat`,
        a.LastUpdated,
        GROUP_CONCAT((CASE WHEN d.CustomeField = 2 THEN d.content ELSE NULL END)) `NT`
FROM    tickets a
        INNER JOIN users b
            ON a.owner = b.id
        INNER JOIN queue c
            ON a.queue = c.id
        INNER JOIN  CustomFieldValue d
            ON a.ID = d.ObjectID
 GROUP BY a.ID

SQLFiddle デモ

于 2012-09-12T02:55:48.907 に答える