Mysql Sql在一条语句中从第二个表中获取两行

Mysql Sql在一条语句中从第二个表中获取两行,mysql,sql,sql-server,Mysql,Sql,Sql Server,我有两张桌子: 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

我有两张桌子:

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

谢谢你的帮助,
Kim

再次加入同一个表时,请使用不同的别名

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'

再次加入同一个表时,请使用不同的别名

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'
试试这个

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日期格式

试试这个

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日期格式

在查询中,您尚未为Orders表创建别名。您应该使用left-join,因为您必须从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'

在查询中,您尚未为Orders表创建别名。您应该使用left-join,因为您必须从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'

是否应该是订单中的
O
是否应该是订单中的
O
是否可以修改以根据数据类型正确格式显示日期。这太让人困惑了。你能修改一下,根据数据类型正确地显示日期格式吗。这太让人困惑了,对不起我的英语。选择日期(now())的输出是什么;它将返回日期。将日期与日期进行比较将更安全地将日期与字符串进行比较。我的意思是像那样抱歉任何错误这不起作用我只得到展位员工和经理id存在的记录,而不是只有一个id存在的所有记录。从订单中选择O.OrderDate,E.Name,M.Name O LEFT JOIN员工E on O.employee=E.Eid LEFT JOIN员工M on O.manager=M.Eid where date(O.OrderDate)>日期('2016-01-01')对不起,我的英语不好。选择日期(现在())的输出是什么;它将返回日期。将日期与日期进行比较将更安全地将日期与字符串进行比较。我的意思是,很抱歉出现任何错误。这不起作用,我只获取展位员工和经理id所在的记录,而不是仅存在其中一个id的所有记录。选择O.OrderDate,E.Name,M.Name from Orders O LEFT JOIN employee E在O.Employee=E.Eid左侧加入O.Manager=M.Eid上的员工M,其中日期(O.OrderDate)>日期('2016-01-01')