【发布时间】:2014-03-18 13:18:14
【问题描述】:
我需要一些关于如何为我的数据中的特定案例创建 SQL 语句的建议。我有两个包含以下字段的表:
horse_shows table
horse_shows.showID
horse_shows.horse_show_date
horse_shows.horse_show_managerID
horse_shows.horse_show_secretaryID - this field is allowed to be empty
show_managers table
show_managers.managerID
show_managers.name
show_managers.email
horse_shows 表中的 horse_show_managerID 和 horse_show_secretaryID 字段都映射到 show_managers 表中的 managerID。并非所有节目都有节目秘书,因此 horse_shows 表中的 horse_show_secretaryID 字段可以为空。
我想打印具有特定 ID 的演出的演出日期、演出经理和演出秘书。如果 horse_shows 表中的 horse_show_secretaryID 字段为空白,我希望它只为秘书打印空白。所以我尝试了这个:
SELECT
horse_shows.horse_show_date,
show_managers.name,
show_secretaries.name
FROM horse_shows
JOIN show_managers ON horse_shows.horse_show_managerID = show_managers.managerID
JOIN show_managers as show_secretaries ON horse_shows.horse_show_secretaryID = show_secretaries.managerID
WHERE horse_shows.showID = 'XYZ';
但是,如果上面的语句在 show_managers 表中的 horse_show_managerID 和 horse_show_secretaryID 上都找到匹配项,则仅返回具有该 showID 的节目行。如果 horse_shows 表中的 horse_show_secretaryID 字段为空(这是一个有效条件),则该语句不返回任何行。当 horse_show_secretaryID 字段为空白时,我希望它返回“XYZ”节目的日期、经理和(空白)秘书。
谁能帮帮我?
谢谢!
【问题讨论】:
-
您使用的是 SQL Server 还是 MySQL?请学会适当地标记您的问题。
-
对于看似不正确的标签,我深表歉意。我是使用 sql 的新手,我没有意识到在这种特殊情况下我使用的 sql 有所不同。我以为我在问一个一般的 sql 问题。在这种特殊情况下,我使用 mysql 作为一种爱好来构建 wordpress 网站)。但是,我也在工作中使用 sql-server。所以,我认为这两个标签都可能适用于此。
标签: php mysql sql sql-server join