【问题标题】:Where did those people come from in this SQL table?这些人是从哪里来的这个 SQL 表?
【发布时间】:2021-12-14 15:55:09
【问题描述】:

您好,如果有人可以就此向我提供建议,请因为我已经被困了一段时间。我需要根据员工和客户是否进行交易,显示某个日期在位置 id 1 的人员。手动检查数据时,仅涉及 2 笔交易和 3 个人:

SELECT * FROM CS_store.Transactions
WHERE date = '2021-09-07' AND l_id = 1;

Table

但是当我编写代码时,一群我不知道他们来自哪里的人声称符合所有标准。为什么?:

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;

Result 2

谢谢

【问题讨论】:

  • 你知道Employees e,Customers c, Transactions t , Locations l是什么意思吗?
  • @forpas 我知道这是一种快捷方式。员工进e等
  • @Cyber​​WTF 如果你要加入 2 个表,你需要告诉 MySQL 加入哪些字段。了解JOIN 和ON
  • 如果你这样做 FROM Employees e,Customers c, Transactions t , Locations l 你正在做一个 FULL JOIN,在你没有链接限制的情况下,查看它,它将解释为什么你返回了这么多结果

标签: mysql sql database


【解决方案1】:

您需要将表格连接在一起,否则您将获得所有表格的笛卡尔积。我不得不猜测你的一些专栏,但这样的事情应该可以工作:

CREATE VIEW PeopleInShop AS 
SELECT e.birth_day, e.first_name, e.last_name, t.date, l.l_id
FROM Employees e,Transactions t , Locations l
WHERE l.l_id = 1 AND t.date = '2021-09-07'
AND t.e_id = e.e_id AND t.l_id = l.l_id
UNION
SELECT c.birth_day, c.first_name, c.last_name, t.date, l.l_id
FROM Customers c , Transactions t , Locations l
WHERE l.l_id = 1 AND t.date = '2021-09-07' 
AND t.c_id = c.c_id AND t.l_id = l.l_id ;

SELECT * FROM PeopleInShop;

事实上,如果我猜对了您的列,那么您根本不需要位置表,因为您的事务表将位置 ID 作为外键:

CREATE VIEW PeopleInShop AS 
SELECT e.birth_day, e.first_name, e.last_name, t.date, t.l_id
FROM Employees e,Transactions t
WHERE t.l_id = 1 AND t.date = '2021-09-07'
AND t.e_id = e.e_id
UNION
SELECT c.birth_day, c.first_name, c.last_name, t.date, t.l_id
FROM Customers c , Transactions t 
WHERE t.l_id = 1 AND t.date = '2021-09-07' 
AND t.c_id = c.c_id ;

【讨论】:

    猜你喜欢
    • 2016-07-23
    • 1970-01-01
    • 2020-07-31
    • 2019-11-18
    • 2018-09-25
    • 2014-10-23
    • 2018-02-26
    相关资源
    最近更新 更多