现在我有一个包含两个表的小型数据库,如下所示:
users table
====================
id name status_id
1 Bobby 3
2 James 2
和
statuses table
=============
id value
1 Waiting
2 Approved
3 Other
status_id被设置为状态表中id的外键约束。我的查询看起来像这样:
SELECT *
FROM `users`
WHERE `status_id` = 2";
当我显示$row['status_id']
时,它会输出2
,但我希望它显示为Approved
,而实现此目的的最佳方法是什么?
答案 0 :(得分:22)
SELECT u.*, s.*
FROM users u
inner join statuses s on u.status_id = s.id
WHERE u.status_id = 2
答案 1 :(得分:6)
你需要的是这个
SELECT *
FROM `users`
JOIN statuses ON statuses.id = users.status_id
WHERE `status_id` = 2";
然后你可以参考
$row['value'];
答案 2 :(得分:2)
最简单的方法是通过连接:
select *
from User u join Status s on u.status_id = s.id;
(如果你根本不想要status-id,你可以在select-clause中指定你想要的列。)
答案 3 :(得分:0)
您的用户表中没有已批准的值。它位于您的状态表中。当您请求status_id时,您将从该查询中获取该值。我认为你必须做JOIN ON status_id
才能完成这项工作。或者做第二次查询。
答案 4 :(得分:0)
你不是JOIN在这里:
SELECT *
FROM Users U, Statuses S
WHERE S.id=U.status_ID
AND status_id = 2;