如何在MySQL中使用外键查询?

时间:2012-09-18 18:47:30

标签: php mysql foreign-keys mysqli

现在我有一个包含两个表的小型数据库,如下所示:

    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,而实现此目的的最佳方法是什么?

5 个答案:

答案 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;