我是 SQL 新手,正在尝试在 MySQL 中为我创建的数据库编写查询。该查询旨在显示主办的每个研讨会以及参加研讨会的每个客户的信息。该查询还旨在显示没有人参加的研讨会。我怎样才能让它做到这一点?感谢您提前提供的任何帮助。
SELECT sem.SeminarID, sem.SeminarDate, sem.Location, sem.SeminarTitle, cust.CustomerID, cust.LastName, cust.FirstName
FROM seminar AS sem JOIN
seminar_customer as SC on sem.SeminarID = SC.SeminarID JOIN
customer AS cust on SC.CustomerID = cust.CustomerID
ORDER BY SeminarID;
最佳答案
您需要一个“OUTER JOIN”,它允许返回研讨会表中的某些行,这些行在研讨会_客户表中没有匹配的行。
按照您的查询布局方式,seminar_customer 位于“左侧”,因此请使用“LEFT OUTER JOIN”
SELECT sem.SeminarID, sem.SeminarDate, sem.Location, sem.SeminarTitle, cust.CustomerID, cust.LastName, cust.FirstName FROM seminar AS sem LEFT OUTER JOIN seminar_customer as SC on sem.SeminarID = SC.SeminarID LEFT OUTER JOIN customer AS cust on SC.CustomerID = cust.CustomerID ORDER BY SeminarID;
参见:A Visual Explanation of SQL Joins
您可以在这些连接中省略“OUTER”一词,因此通常您只会看到“LEFT JOIN”,但它们是相同的东西
关于MySQL 如何获取查询以显示没有客户参加的研讨会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47104075/