【发布时间】:2018-03-27 04:52:12
【问题描述】:
我有一个包含 3 个表的数据库(见截图)
我需要退回允许营销的客户。
我可以使用 where 子句返回客户标题,但我不确定如何过滤允许营销的客户。我已经查看了 where 和 join 子句,但我可能遗漏了什么?
任何帮助将不胜感激。
【问题讨论】:
标签: mysql sql sql-server rdbms
我有一个包含 3 个表的数据库(见截图)
我需要退回允许营销的客户。
我可以使用 where 子句返回客户标题,但我不确定如何过滤允许营销的客户。我已经查看了 where 和 join 子句,但我可能遗漏了什么?
任何帮助将不胜感激。
【问题讨论】:
标签: mysql sql sql-server rdbms
看起来应该是这样的:
SELECT c.Forename, c.Surname, c.Email, t.Description, s.IsMarketingAllowed
FROM Customer c
INNER JOIN Statuses s ON c.StatusID = s.StatusID
INNER JOIN Titles t ON c.Title = t.TitleID
WHERE s.IsMarketingAllowed = 1
【讨论】:
code select Forename, Surname, Email from Titles, Customers, Statuses where Customers.Title = Titles.TitleID;这就是我需要修改的内容,以便在有意义的情况下返回允许营销的客户?
code 选择 Description Forename, Surname, Email from Titles, Customers where Customers.Title = Titles.TitleID; code
SELECT Title
FROM Customer AS Cust
WHERE EXISTS (SELECT *
FROM Statuses AS S
WHERE S.statusID = Cust.statusID
AND S.isMarketingAllowed = 1);
请注意: 虽然通过 JOIN 操作可以获得相同的结果、相似的性能,但我认为它的可读性较差。当您需要从第二个表中访问数据(通过 select 子句)时,应使用 JOIN 操作。
【讨论】: