我有两张桌子:
Order Table
ID OrderDate Employee Manager
1 1/1/2016 100 101
2 1/2/2016 100 101
3 1/2/2016 100
4 1/2/2016 101
Employee Table
Eid Name
100 Matt
101 Bill
我需要像这样的结果
1/1/2016 Matt Bill
1/2/2016 Matt Bill
1/2/2016 Matt
1/2/2016 Bill
My SQL
Select O.* from Orders
JOIN Employee E on O.Employee=E.Eid
JOIN Employee E on O.Manager=E.Eid
Where O.OrderDate > '2016-01-01'
我没有结果。如果我删除了JOIN,我会收到所有订单以及员工和经理Eid。
感谢您的帮助, 金
答案 0 :(得分:1)
在您的查询中,您尚未为Orders表创建别名。并且您必须使用左连接,因为您必须从orders表中获取所有记录,并且如果employee表中存在相关记录,则只会获取它。请查看下面的查询。
Select O.*, E.Name, M.Name from Orders as O
LEFT JOIN Employee E on O.Employee=E.Eid
LEFT JOIN Employee M on O.Manager=M.Eid
Where O.OrderDate > '2016-01-01'
答案 1 :(得分:0)
再次加入同一个表时使用不同的别名。
Select O.* , E.Name, M.Name
from Orders O
JOIN Employee E on O.Employee=E.Eid
JOIN Employee M on O.Manager=M.Eid
Where O.OrderDate > '2016-01-01'
答案 2 :(得分:0)
Select O.* , E.Name, M.Name
from Orders O
JOIN Employee E on O.Employee=E.Eid
JOIN Employee M on O.Manager=M.Eid
Where O.OrderDate > '2016-01-01'
答案 3 :(得分:-1)
试试这个
Select O.* , E.Name, M.Name
from Orders O
JOIN Employee E on O.Employee=E.Eid
JOIN Employee M on O.Manager=M.Eid
Where date( O.OrderDate)>date( '2016-01-01')
我已添加日期功能,这两个日期将首先转换为MySQL日期格式。