好的,我有一个客户想要输出系统中一群学生的所有信息。
此输出将导入Excel以供操作。
因此,我的问题是,我想从4个表中输出所有学生的信息
海选排定试镜概况试镜时间
因此,当面试记录下来时,海选表获取并输入连接到学生的任何信息。在那之前,在分局里没有他们的试镜。
所以,我想为每个学生输出一行,上面写着他们的试镜计划是什么时候,如果他们已经有了试镜,那么输入信息,但是如果没有,就把字段留为空白。
到目前为止,我还有些类似的事情
"SELECT ".$fields." FROM profiles p, auditions a, scheduled_auditions s,
audition_times t WHERE p.id=t.id AND t.id=s.id AND a.id=p.id"问题是显而易见的。它只会输出有试镜的人。那么,我如何编写条件select/where语句呢?我需要用一个查询输出它,这样当我在excel中打开它时它就可以工作了。
谢谢你们。我很困惑。
发布于 2011-06-06 22:25:12
您希望执行外部连接;即使连接记录为null,外部联接也会返回结果。
具体来说,在面试表中指定一个左边的外部连接将强制所有学生的记录被退回,甚至那些没有参加面试的记录。
发布于 2011-06-06 22:24:36
您考虑过使用左外部联接吗?
如果使用内部联接将表A和B连接起来,则只能得到A和B中存在的行。如果使用左联接,则A中的所有行都将得到A中的所有行,如果存在这些行中的一些行将有来自B的数据。否则,B中的列将为null。
编辑:A左连接B在逻辑上等同于B右连接A -所以做任何在你头脑中最有意义的事情(谢谢保罗!)
发布于 2011-06-06 22:26:49
听起来你只需要一个外部连接,这就像一个普通的连接,但是在没有匹配键的地方,它只会对每个字段返回NULL。
SELECT *
FROM profiles p
LEFT OUTER JOIN audition_times t
ON p.id=t.id
LEFT OUTER JOIN scheduled_auditions s
ON t.id=s.id
LEFT OUTER JOIN auditions a
ON a.id=p.id"https://stackoverflow.com/questions/6258715
复制相似问题