17

現在、次のような 2 つのテーブルを持つ小さなデータベースがあります。

    users table
    ====================
    id  name   status_id
    1   Bobby  3
    2   James  2

    statuses table
    =============
    id  value
    1   Waiting
    2   Approved
    3   Other

status_id は、statuses テーブルの id に対する外部キー制約として設定されます。私のクエリは次のようになります。

SELECT *
FROM `users`
WHERE `status_id` = 2";

$row['status_id']出力を表示すると、代わりに2表示したいのですが、これを達成するための最良の方法は何ですか?Approved

4

5 に答える 5

28
SELECT u.*, s.*
FROM users u
    inner join statuses s on u.status_id = s.id
WHERE u.status_id = 2
于 2012-09-18T18:51:55.270 に答える
6

必要なのはこれ

SELECT *
FROM `users`
JOIN statuses ON statuses.id = users.status_id
WHERE `status_id` = 2";

そして、あなたは参照することができます

$row['value'];
于 2012-09-18T18:52:20.700 に答える
3

最も簡単な方法は、結合によるものです。

select *
from User u join Status s on u.status_id = s.id;

(status-id がまったく必要ない場合は、select-clause で必要な列を指定できます。)

于 2012-09-18T18:49:39.607 に答える
0

users テーブルには、承認済みの値がありません。それはあなたのステータステーブルにあります。status_id をリクエストすると、そのクエリからその値が返されます。あなたはこれをうまくやるためにやらなければならないJOIN ON status_idと思います。または、2 番目のクエリを実行します。

于 2012-09-18T18:50:01.290 に答える
0

あなたはここに参加していませ:

SELECT *
FROM Users U, Statuses S
WHERE S.id=U.status_ID
AND status_id = 2;
于 2012-09-18T18:51:12.263 に答える