2

私は次の3つのデータテーブルを持っています

Options Table
UID (pk) SID (pk) TID (pk)
--------------------------
1        20       2
1        20       3
1        13       3
1        14       4

Types Table
TID (pk) TText
--------------------------
1        Text 1
2        Text 2
3        Text 3
4        Text 4

Sets Table
SID (pk)  SText
--------------------------
13        Set 13
14        Set 14
20        Set 20

オプションテーブルから4行だけで、他の2つのテーブルからの対応するテキストを使用して、次のように出力を取得しようとしています。私の参加はオフトのようです。

私が欲しい結果は次のとおりです。

UID (pk) SID (pk) TID (pk)  SText      TText
------------------------------------------------------
1        20       2         Set 20     Text 2
1        20       3         Set 20     Text 3
1        13       3         Set 13     Text 3
1        14       4         Set 14     Text 4
4

3 に答える 3

1
SELECT  a.*, b.Stext, c.TText
FROM    Options a
        INNER JOIN Sets b
            ON a.SID = b.SID
        INNER JOIN  Types c
            ON a.TID = c.TID

更新 1

追加DISTINCT

SELECT  DISTINCT a.*, b.Stext, c.TText
FROM    Options a
        INNER JOIN Sets b
            ON a.SID = b.SID
        INNER JOIN  Types c
            ON a.TID = c.TID
于 2013-01-18T09:07:47.790 に答える
0

これを試すことができます:

SQLFIDDLE デモ

編集: 最初のクエリは mysql で記述されているため、sql サーバーには個別を使用します

select distinct o.*, t.ttext, s.stext from 
    options o
    inner join 
    types t
    on o.tid = t.tid
    left join 
    sets s
    on s.sid = o.sid
    ;

select o.*, t.ttext, s.stext from 
options o
inner join 
types t
on o.tid = t.tid
left join 
sets s
on s.sid = o.sid
group by o.uid, o.tid, o.sid
;

| UID | SID | TID |  TTEXT |  STEXT |
-------------------------------------
|   1 |  20 |   2 | Text 2 | Set 20 |
|   1 |  13 |   3 | Text 3 | Set 13 |
|   1 |  20 |   3 | Text 3 | Set 20 |
|   1 |  14 |   4 | Text 4 | Set 14 |
于 2013-01-18T09:15:01.090 に答える
0
SELECT O.UID,O.SID,O.TID,T.TText,S.SText
FROM Options O
INNER JOIN Types T ON
    T.TID = O.TID
INNER JOIN Sets S ON
    S.SID = O.SID
于 2013-01-18T09:12:43.643 に答える