简体   繁体   English

SQL Server 2005连接问题

[英]SQL Server 2005 Joining Issues

I have the following 3 data tables 我有以下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

I am trying to get the output as follows, with only 4 rows from the options table, but with the corresponding text from the other 2 tables. 我试图获得如下输出,仅从选项表中获得4行,但从其他2个表中获得相应的文本。 My joins seems to be off tho. 我的加入似乎不对。

The result I want is: 我想要的结果是:

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
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

UPDATE 1 更新1

add DISTINCT 添加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
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

You may try this : 您可以尝试这样:

SQLFIDDLE DEMO SQLFIDDLE演示

edit: use distinct for sql server since the first query was written in mysql 编辑:因为第一个查询是在mysql中编写的,所以对SQL Server使用不重复

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 |

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM