Php 为什么下面的SQL查询返回空结果?

Php 为什么下面的SQL查询返回空结果?,php,mysql,sql,Php,Mysql,Sql,我有以下表格结构: 1-课程课程id、课程名称、语言、课程价格、创建日期、平均评分、类别、, 课程描述、证书价格、课程创建者id 2-学生身份证、钱包 3-折扣折扣折扣id、折扣课程id、允许折扣的课程创建者id、开始日期、结束日期、百分比 4-注册学生id、课程id、购买价格、购买日期 我想写一个查询,它将返回id为$person\u id的课程创建者的每门课程以及以下内容: 1-如果该课程有折扣,且当前日期介于该折扣的开始日期和结束日期之间,则课程价格将根据百分比降低 2-注册该课程的学生人

我有以下表格结构:

1-课程课程id、课程名称、语言、课程价格、创建日期、平均评分、类别、, 课程描述、证书价格、课程创建者id

2-学生身份证、钱包

3-折扣折扣折扣id、折扣课程id、允许折扣的课程创建者id、开始日期、结束日期、百分比

4-注册学生id、课程id、购买价格、购买日期

我想写一个查询,它将返回id为$person\u id的课程创建者的每门课程以及以下内容:

1-如果该课程有折扣,且当前日期介于该折扣的开始日期和结束日期之间,则课程价格将根据百分比降低

2-注册该课程的学生人数。如果没有这样的学生,0

3-课程id、课程名称、平均评分、折扣百分比和价格

我有以下疑问

SELECT  C.course_id, C.course_name, C.average_rating, total_student, 
                            D.percentage, (CASE WHEN CURRENT_DATE >= D.start_date AND 
                            CURRENT_DATE < D.end_date AND D.is_allowed
                            THEN C.course_price * (( 100 - D.percentage ) / 100)
                            ELSE C.course_price END) as price
                    FROM        course C LEFT OUTER JOIN discount D ON 
                                C.course_id = D.discounted_course_id, 
                                (SELECT     course_id, COUNT(student_id) AS total_student
                                FROM        enrolls
                                WHERE   course_id IN (SELECT course_id
                                                    FROM course
                                                    WHERE course_creator_id = '$person_id')
                                                    GROUP BY    course_id) course_student
                    WHERE   course_student.course_id = C.course_id


当student、discount、enrolls表为空时,查询不会返回任何内容。我希望它返回课程信息,其中total_student=0或null,percentage=0或null,不要紧,为课程的原始价格定价。

尝试这样做

选择 C.课程id,C.课程名称,C.平均评分,学生总数, D.当前日期>=D.开始日期和 当前日期我得到了以下错误,先生:您的SQL语法有一个错误;检查与您的MariaDB服务器版本相对应的手册,以了解在第行中使用接近“LEFT JOIN SELECT course_id,COUNTstudent_id AS total_student FROM…”的正确语法9@user14807402你没有注意到在加入之前有多余的逗号吗?我的道歉,刚刚编辑,再试一次我的英雄,非常感谢你,先生。