Php 外键、联接和返回索引

Php 外键、联接和返回索引,php,mysql,foreign-keys,left-join,Php,Mysql,Foreign Keys,Left Join,我在mySQL数据库中有两个表 所有里程碑(主键:MSID) 用户事务(外键:MSID) 我使用以下代码查询表: $get_ms = db_query("SELECT * FROM milestones_all LEFT JOIN user_transactions on user_transactions.MSID = milestones_all.MSID WHERE milestones_all.MID=$MID AND (u

我在mySQL数据库中有两个表

  • 所有里程碑(主键:MSID)
  • 用户事务(外键:MSID)
我使用以下代码查询表:

   $get_ms = db_query("SELECT * FROM milestones_all
        LEFT JOIN user_transactions on user_transactions.MSID = milestones_all.MSID 
        WHERE milestones_all.MID=$MID  
        AND (user_transactions.tran_status IS NULL OR user_transactions.tran_status=3)
        ORDER BY milestones_all.MSID ASC LIMIT 1"));

    while($ms = $get_ms->fetch_assoc()){
           $MSID = $ms['MSID'];
           $ms_title = $ms['ms_title'];
     }
以下是SQL:

SELECT * FROM milestones_all
LEFT JOIN user_transactions on user_transactions.MSID = milestones_all.MSID 
WHERE milestones_all.MID=$MID
AND (user_transactions.tran_status IS NULL OR user_transactions.tran_status=3)
ORDER BY milestones_all.MSID ASC LIMIT 1
我要做的是打印出任何一行的
里程碑\u all
中的数据 没有附加到
user\u transactions
行,如果有,则
user\u transactions
中的
tran\u status
列设置为
3

到目前为止,查询将返回关于要返回哪些行的正确结果
ms_title
的返回方式与应返回的方式完全相同。问题是:
MSID
总是返回空白。在我的数据库中它不是空的。这可能是因为
LEFT JOIN
正在使用
MSID
列查找匹配项吗?也许有更好的办法


注意:
db\u query
功能不会产生干扰。

是的,这是因为您有两列名为
MSID
。如果将联接更改为使用
USING
而不是上的
,则会将两列合并为一列:

SELECT * FROM milestones_all
LEFT JOIN user_transactions USING(MSID) 
WHERE milestones_all.MID=$MID
AND (user_transactions.tran_status IS NULL OR user_transactions.tran_status=3)
ORDER BY milestones_all.MSID ASC LIMIT 1