Php 外键、联接和返回索引
我在mySQL数据库中有两个表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
- 所有里程碑(主键: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