我有一个SQL Server数据库,我想在一个主表中包含包含ID和连接的列?它们有3个其他表,其中这些ID与实际名称相匹配。
实施例
表格=滑动如下:
ID | UserID | ClientID | TimeID
---------------------------------
10 | 35 | 48 | 27
我有另外3个名为Usernames, Clientnames, Timeactnames
这些表中的每一个都是这样的:
用户名
ID | Nickname1 |
----------------
35 | Shawn |
Clientnames
ID | Nickname1 |
----------------
48 | Roger |
Timeactnames
ID | Nickname1 |
----------------
27 | Filing |
我想要一个新的查询结果,显示滑动表结果如下:
ID | UserID | ClientID | TimeID
---------------------------------
10 | Shawn | Roger | Filing
这可能吗?
我尝试了加入联盟和联盟,但我从来没有得到过这样的结果,我得到了一些巨大的表格结果组合:
SELECT tsslips.*, ClientData.*, UserData.*, TimeActData.* FROM slips JOIN ClientData ON ClientData.ID = slips.ClientID JOIN TSUserData ON UserData.ID = slips.UserID JOIN TimeActData ON TimeActData.ID = slips.TimeActID
我所得到的只是一张非常庞大的长桌,其中包含所有信息,但不是我想要的新合并表。
然后我尝试了这个:
SELECT * FROM ( SELECT UserID, ClientID, TimeActID FROM Slips UNION ALL SELECT Nickname1 FROM ClientData UNION ALL SELECT Nickname1 FROM UserData UNION ALL SELECT Nickname1 FROM TimeActData ) all_tables WHERE all_tables.ClientID = 'something'
但是我不认为我正确地格式化或使用了那个,因为我收到了一个错误:
消息205,级别16,状态1,行1使用UNION,INTERSECT或EXCEPT运算符组合的所有查询在其目标列表中必须具有相同数量的表达式。
我正在尝试获取查询结果,以便我可以在SQL Server 2008中使用右键单击“保存为CSV”选项
答案 0 :(得分:1)
SELECT s.ID, u.NickName1 As UserID, c.NickName1 As ClientID, t.NickName1 As TimeID
FROM Slips s
LEFT JOIN Username u ON u.ID = s.UserID
LEFT JOIN ClientNames c ON c.ID = s.ClientID
LEFT JOIN TimeactNames t on t.ID = s.TimeID
根据您的数据,您可能需要INNER JOIN而不是LEFT JOIN。
答案 1 :(得分:0)
您可以尝试此查询
SELECT Slips.ID,Usernames.Nickname1 AS UnserID,Clientnames
,Nickname1 AS ClientID
,Timeactnames.Nickname1 AS TimeId
FROM Slips
LEFT JOIN Usernames ON Slips.UserId = Usernames.ID
LEFT JOIN Clientnames ON Slips.ClientId = Clientnames.ID
LEFT JOIN Timeactnames ON Slips.TimeId = Timeactnames.ID
答案 2 :(得分:-1)
这是你要找的东西吗?
选择slips.ID,Usernames.Nickname1,Clientnames.Nickname1,Timeactnames.Nickname1
来自单据,用户名,客户名,时间名
WHERE slips.UserID = Usernames.ID,slips.ClientID = Clientnames.ID,slips.TimeID = Timeactnames.ID;