web-dev-qa-db-ja.com

MySQLで外部キーを使用してクエリするにはどうすればよいですか?

現在、次のような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として表示したいのですが、これを行うための最良の方法は何ですか。

15
Josh Mountain
SELECT u.*, s.*
FROM users u
    inner join statuses s on u.status_id = s.id
WHERE u.status_id = 2
22
Clodoaldo Neto

あなたが必要なのはこれです

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

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

$row['value'];
6
Iberê

最も簡単な方法は、結合を使用することです。

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

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

2
Tobb

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

0
thatidiotguy

あなたは [〜#〜] join [〜#〜] していない:

SELECT *
FROM Users U, Statuses S
WHERE S.id=U.status_ID
AND status_id = 2;
0
CodeTalk