我应该使用CASE WHEN还是IIF?子查询是否可能是解决方案的一部分



我使用的是我的SQL(最新版本(,我有下表:

CREATE TABLE COURSES (
IDCOURSE INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR (30) NOT NULL, 
HOURS INT,
PRICE FLOAT (10,2) NOT NULL, 
ID_PREREQ INT
);
ALTER TABLE COURSES ADD CONSTRAINT FK_PREREQ
FOREIGN KEY (ID_PREREQ) REFERENCES COURSES (IDCOURSE);

我想做的是:选择列NAME、HOURS、PRICE和ID_PREREQ AS REQUISITES。每当ID_PREREQ为NULL时;无请求";。如果是,那么我想读取关联的NAME列中的任何内容。

例如:

如果这是我的桌子:

>00.00
IDCOURSENAMEHOURS
1关系数据库20
2商业智能高级数据库3编程

如果需要在课程中提取相应的先决条件,则需要应用SELF JOIN操作。在连接类型中,可以使用LEFT JOIN来保留没有先决条件的课程。然后COALESCE函数将允许您用自己选择的字符串替换NULL值(如">NOREQUISITES"(。

SELECT c1.IDCOURSE,
c1.NAME,
c1.HOURS,
c1.PRICE,
COALESCE(c2.NAME, 'NO REQUISITES') AS REQUISITES
FROM      COURSES c1
LEFT JOIN COURSES c2
ON c1.ID_PREREQ = c2.IDCOURSE 
ORDER BY IDCOURSE

请在此处查看演示。

旁注:MySQL的IIF函数名为IF

相关内容

  • 没有找到相关文章

最新更新