Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';MYSQL中的t过滤器空值_Mysql - Fatal编程技术网

Can';MYSQL中的t过滤器空值

Can';MYSQL中的t过滤器空值,mysql,Mysql,我用的是Moodle数据库。我不希望在查询中显示任何空值。但到目前为止它还不起作用: SELECT mdl_user.department, mdl_user.id, mdl_user.username, mdl_user.firstname, mdl_user.lastname, mdl_course_completions.course, mdl_course_completions.timecompleted, mdl_course.fullname FROM mdl_user LE

我用的是Moodle数据库。我不希望在查询中显示任何空值。但到目前为止它还不起作用:

SELECT mdl_user.department, mdl_user.id, mdl_user.username, mdl_user.firstname, mdl_user.lastname, mdl_course_completions.course, mdl_course_completions.timecompleted, mdl_course.fullname  

FROM mdl_user LEFT JOIN (mdl_course_completions, mdl_course) ON (mdl_user.id = mdl_course_completions.id AND mdl_course_completions.id = mdl_course.id) WHERE NOT (mdl_course_completions.timecompleted IS NULL);\G
Empty set (0.00 sec)
我尝试使用的是NOTNULL,但这给了我相同的结果


有什么想法吗?

这是我或多或少的期望:

SELECT mdl_user.department, mdl_user.id, mdl_user.username,
    mdl_user.firstname, mdl_user.lastname, mdl_course_completions.course,
    mdl_course_completions.timecompleted, mdl_course.fullname  
FROM mdl_user
LEFT JOIN mdl_course_completions ON mdl_user.id = mdl_course_completions.user_id 
LEFT JOIN mdl_course ON mdl_course_completions.course_id = mdl_course.id)
WHERE mdl_course_completions.timecompleted IS NOT NULL
假设
mdl\u课程完成
有外键
user\u id
to
mdl\u用户(id)
course\u id
to
mdl\u课程(id)


正如另一位用户所建议的,“mdl\u user.id=mdl\u course\u completions.id”看起来不正确“user\u id=user\u id”我假设mdl\u course\u completions的id不是用户的id?

如果删除WHERE,会得到任何结果吗?不使用左连接如何,或者某个列的值不为null您可以尝试使用内部联接而不是左联接您是否正确地进行联接?您在同一个
mdl\u course\u completions.id上连接了两个不同的表,这没有多大意义。外键通常只与一个表相关,而不是两个不同的表。否则,这意味着
mdl\u user.id=mdl\u course.id
是相同的字段try,其中(mdl\u course\u completions.timecompleted不为NULL);
SELECT 
    mdl_user.department, 
    mdl_user.id, 
    dl_user.username,
    mdl_user.firstname, 
    mdl_user.lastname, 
    mdl_course_completions.course,
    mdl_course_completions.timecompleted, 
    mdl_course.fullname  
FROM mdl_user
LEFT JOIN (SELECT * FROM mdl_course_completions WHERE timecompleted IS NOT NULL) as mdl_course_completions
    ON mdl_user.id = mdl_course_completions.user_id 
LEFT JOIN mdl_course 
    ON mdl_course_completions.id = mdl_course.id