我需要从一个乐队列表中显示键盘播放器,我已经能够使用以下SQL:
SELECT BAND.NAME AS Band_Name, KBPLAYER.NAME AS Keyboard_Player
FROM BAND
FULL OUTER JOIN (
SELECT M.NAME, MO.BID
FROM MEMBEROF MO, MEMBER M
WHERE MO.INSTRUMENT='keyboards'
AND M.MID=MO.MID
) KBPLAYER
ON BAND.BID=KBPLAYER.BID
ORDER BY BAND.NAME, KBPLAYER.NAME
Run Code Online (Sandbox Code Playgroud)
以上查询显示该频段中所有乐队和键盘播放器(如果有)的名称,但我还想为那些没有键盘播放器的乐队显示"No KeyBoard Players".我怎样才能做到这一点?如果您需要我提供表格结构的详细信息,请告诉我.
更新:请注意,我无法使用任何SQL3 procedures(COALESCE, CASE, IF..ELSE).它需要严格遵守SQL3标准.
har*_*mic 14
使用合并功能.此函数返回其中第一个非null的参数.例如:
COALESCE(KBPLAYER.NAME,'No KeyBoard Players') AS Keyboard_Player
Run Code Online (Sandbox Code Playgroud)
我决定采用不同的方式,因为我不会使用上述 SQL 进行任何操作。如果有人对上述具有设置约束的 SQL 提出建议,我将不胜感激。
SELECT
band.name AS Band_Name, 'NULL' AS Keyboard_Player
FROM
memberof
INNER JOIN
member
ON
memberof.mid = member.mid
FULL JOIN
band
ON
memberof.bid = band.bid
AND
instrument = 'keyboards'
WHERE
member.name IS NULL
UNION
SELECT
band.name AS Band_Name, member.name AS Keyboard_Player
FROM
memberof
INNER JOIN
member
ON
memberof.mid = member.mid
FULL JOIN
band
ON
memberof.bid = band.bid
WHERE
instrument = 'keyboards'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19769 次 |
| 最近记录: |