Php mysql离开加入没有结果问题

时间:2012-02-06 01:31:06

标签: php mysql left-join

我有一个使用左连接的查询,我的问题是如果右表是空的我不能得到我正在用于ON子句的值,我的意思是;

   SELECT members.*,
          photos.* 
   FROM   members LEFT JOIN photos on members.member_id = photos.member_id

现在,如果它从照片表中返回一个结果,那就ok了。但是当照片表没有结果时,它会从成员表返回,但它不会返回member_id。它从members表返回所有其他,但不返回member_id

4 个答案:

答案 0 :(得分:4)

这里的问题是你有两个同名的列。

尝试重命名一个以避免碰撞:

SELECT *, members.member_id AS real_member_id

答案 1 :(得分:2)

members.member_id提供别名。

SELECT members.member_id as m_id, [other column you want] 
FROM members LEFT JOIN photos on members.member_id = photos.member_id

答案 2 :(得分:1)

it returns all others from members table but not member_id你是什么意思?它正在返回(null)吗?基本上是的,它全部返回成员表中的所有记录,因为您从左侧(成员表)加入它。但如果member_id的记录不存在,则返回null。您必须为该列提供ALIAS,因为您有两个具有相同名称的字段。

members.member_id AS MemberID

答案 3 :(得分:0)

最好在SELECT列表中明确地写出您想要的列:

SELECT members.member_id
       members.name,
       photos.photo_id,
       photos.filename,
       ... 

然后您可以确定没有2列具有相同的名称。它也更好,因为当一个表的结构发生变化时,你的查询就会中断,你会很容易找到原因。现在它以意想不到的方式工作了。


如果唯一的常用列是member_id,并且您确实需要所有列,那么这也会有效:

SELECT * 
FROM   members NATURAL LEFT JOIN photos