我遇到了一个小问题,我想知道是否有解决方案。 试图找到存在的东西,但无济于事。
所以这是我的代码:
Select
Order.AccountID,
Order.UserID,
Order.OrderID,
Order.OrderDate,
User.UserName,
Note.NoteID,
Note.UserID,
Note.NoteDate,
Note.Text
FROM
Order
INNER JOIN User ON (Order.UserID=User.UserID)
LEFT OUTER JOIN Note ON (Order.AccountID=Note.AccountID)
WHERE
Order.OrderDate >="2016-01-01"
AND
Order.OrderDate <= (current date -1 day)
AND
Note.NoteID IN (21,41,89)
AND
Note.NoteDate >="2016-01-01"
AND
Note.NoteDate<= (current date -1 day)
GROUPBY
Order.AccountID,
Order.UserID,
Order.OrderID,
Order.OrderDate,
User.UserName,
Note.UserID,
Note.NoteDate,
Note.Text
所以我们有3个表:
订单表:包含订单。它们与执行订单的用户ID一起保存。
用户表:具有用户ID和用户名。我已经使用该表将用户名链接到订单中的userID。
注释表:包含有关帐户的注释和编写注释的用户ID。我还希望在笔记上获得userIDS的用户名。
执行订单的人不一定是那个写笔记的人......
问题:如何将用户名链接到我的笔记,因为它们已经链接到我的订单?
Tables :
Order
AccountID | OrderID | OrderDate | UserID
User
UserID | Username
Note
NoteID | NoteDate | Text | UserID
类似的东西:
AccountID | OrderID | OrderDate | Order.UserID | Order.Username | NoteID | NoteDate | Text | UserID | Note.Username
怎么办?
答案 0 :(得分:0)
如果我正确理解了您的问题,您只需要像使用别名所做的一样:
Select
Order.AccountID,
Order.UserID,
Order.OrderID,
Order.OrderDate,
User.UserName,
Note.NoteID,
Note.UserID,
Note.NoteDate,
Note.Text,
NoteWriter.UserName as 'NoteWriter_Username'
FROM
INNER JOIN User ON (Order.UserID=User.UserID)
LEFT OUTER JOIN Note ON (Order.AccountID=Note.AccountID)
LEFT OUTER JOIN user NoteWriter on NoteWriter.userid = Note.userID
WHERE
Order.OrderDate >="2016-01-01"
AND Order.OrderDate <= (current date -1 day)
AND Note.NoteID IN (21,41,89)
AND Note.NoteDate >="2016-01-01"
AND Note.NoteDate<= (current date -1 day)
诀窍是为您加入的表添加别名,以便您可以引用它。我将新的连接别名为NoteWriter,它将代表添加注释的用户。我还在您的选择中为新列添加了别名,只是为了向您显示您可以在结果集中更轻松地命名。
我已经放弃了这个小组,因为它没有改变任何东西。除非你有一些奇怪的数据,那就是。