我在 mySQL 数据库中有两个表。
- 里程碑_所有(主键:MSID)
- user_transactions(外键: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
我想要做的是打印出milestones_all
任何没有user_transactions
附加行的行的数据,或者如果有,则将tran_status
in中的列user_transactions
设置为3
.
截至目前,查询返回有关要返回哪些行的正确结果。ms_title
准确地返回应该是什么。问题是:MSID
总是返回空白。在我的数据库中它不是空白的。这可能是因为LEFT JOIN
正在使用该MSID
列来查找匹配项吗?也许有更好的方法来做到这一点?
注意:db_query
功能不干扰。