【发布时间】:2021-12-14 15:55:09
【问题描述】:
您好,如果有人可以就此向我提供建议,请因为我已经被困了一段时间。我需要根据员工和客户是否进行交易,显示某个日期在位置 id 1 的人员。手动检查数据时,仅涉及 2 笔交易和 3 个人:
SELECT * FROM CS_store.Transactions
WHERE date = '2021-09-07' AND l_id = 1;
但是当我编写代码时,一群我不知道他们来自哪里的人声称符合所有标准。为什么?:
CREATE VIEW PeopleInShop AS
SELECT e.birth_day, e.first_name, e.last_name, t.date, l.l_id
FROM Employees e,Customers c, Transactions t , Locations l
WHERE l.l_id = 1 AND t.date = '2021-09-07'
UNION
SELECT c.birth_day, c.first_name, c.last_name, t.date, l.l_id
FROM Employees e, Customers c , Transactions t , Locations l
WHERE l.l_id = 1 AND t.date = '2021-09-07' ;
SELECT * FROM PeopleInShop;
谢谢
【问题讨论】:
-
你知道
Employees e,Customers c, Transactions t , Locations l是什么意思吗? -
@forpas 我知道这是一种快捷方式。员工进e等
-
@CyberWTF 如果你要加入 2 个表,你需要告诉 MySQL 加入哪些字段。了解
JOIN和ON -
如果你这样做
FROM Employees e,Customers c, Transactions t , Locations l你正在做一个 FULL JOIN,在你没有链接限制的情况下,查看它,它将解释为什么你返回了这么多结果