将数据从第三个表链接到第一个和第二个表

时间:2016-03-14 23:24:29

标签: sql join

我遇到了一个小问题,我想知道是否有解决方案。 试图找到存在的东西,但无济于事。

所以这是我的代码:

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

怎么办?

1 个答案:

答案 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,它将代表添加注释的用户。我还在您的选择中为新列添加了别名,只是为了向您显示您可以在结果集中更轻松地命名。

我已经放弃了这个小组,因为它没有改变任何东西。除非你有一些奇怪的数据,那就是。