我正在查询,需要输出具有不同但相似条件的新别名。
有两个表;一个用于人,产品和销售。他们应该具有以下内容:
person = (personID, personName, isValidPerson)
product = (productID, productName)
sale = (productID, tradeTime, customerID, employeeID)
我的目标是在特定时间输出productID, productName, customerName, and employeeName
。它也必须与众不同。
从上表中可以看到,我们没有名为customerName
和employeeName
的属性。我知道我必须为这两个属性创建别名,但是由于某种原因我无法使它们工作并给我一个错误。
到目前为止,我试图通过将人员和销售表与两个条件相关联来使用AS
语句。
为了对此进行详细说明,我做了以下事情:
SELECT DISTINCT s.productID, prod.productName,
psn.personName AND psn.personID = s.customerID AS customerName,
psn.personName AND psn.personID = s.employeeID AS employeeName,
FROM person psn, product prod, sale s
WHERE s.tradeTime < '2017-01-01 11:00:00';
但是,在给customerName和employeeName列分配别名时,我一直遇到错误。我尝试对psn.personID AS customerName
做employeeName
并从WHERE声明。但是,我也有这个问题,因为customerName
和employeeName
都存在识别选择哪个psn.personName
的问题。
如果我能正确理解,我希望上述所有四个属性都应在“ 2017-01-01 11:00:00”之前的特定时间范围内显示其结果。
答案 0 :(得分:0)
使用如下所示的连接
Select pr.productID pr.productname
,p.personName as customername,
P1.personName as employeeName
from sale s join product pr
On s.productID=pr.productID
Left Join person p on s.customerID=p.personID
Left Join person p1 on s.employeeID=p1.personID
这里您需要两次与人员表进行连接,第一个用于customaername,第二个用于employeeName,这就是为什么我在连接时使用别名的原因