Ответ 1
SELECT u.*, s.*
FROM users u
inner join statuses s on u.status_id = s.id
WHERE u.status_id = 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 устанавливается как ограничение внешнего ключа для id из таблицы статусов. Мой запрос выглядит примерно так:
SELECT *
FROM `users`
WHERE `status_id` = 2";
Когда я показываю $row['status_id']
, он выводит 2
, но я бы хотел, чтобы он отображался как Approved
вместо этого, что является лучшим способом для этого?
SELECT u.*, s.*
FROM users u
inner join statuses s on u.status_id = s.id
WHERE u.status_id = 2
Что вам нужно, это
SELECT *
FROM `users`
JOIN statuses ON statuses.id = users.status_id
WHERE `status_id` = 2";
а затем вы можете обратиться к
$row['value'];
Самый простой способ - через объединения:
select *
from User u join Status s on u.status_id = s.id;
(если вы вообще не хотите идентификатор состояния, вы можете указать столбцы, которые вы хотите в предложении select.)
Таблица ваших пользователей не имеет одобренных в ней значений. Он находится в таблице ваших статусов. Когда вы запрашиваете status_id, вы получите это значение обратно из этого запроса. Я думаю, вы должны сделать JOIN ON status_id
, чтобы сделать эту работу. Или выполните второй запрос.
Вы не JOIN здесь:
SELECT *
FROM Users U, Statuses S
WHERE S.id=U.status_ID
AND status_id = 2;