MySQL 如何获取查询以显示没有客户参加的研讨会

标签 mysql sql

我是 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/

相关文章:

php - 在 PHP 中使用 PDO 更新 MySQL 数据库

sql - 如何加快 Oracle SQL Developer 上的 REGEX LEVEL 查询速度

sql - ActiveRecord 在同一 bool 值的变体上返回不同的结果

mysql - 'where clause' 中的未知列。嵌套子查询提高 'ORDER BY'的性能

mysql - Groovy Sql 与 mysql cli 比较日期时间差异

mysql - 查询返回具有完整总和而不是每行总和的一行

mysql - 使用顺序/范围概念分组

mysql - 与 wp_postmeta 连接的 wp_posts 内部的 Wordpress 慢速查询

mysql - 不在数据库中插入数据 - grails

PHP MySQL : two while echo from two table to create an ajax live search