Прямо сейчас у меня есть небольшая база данных с двумя таблицами, которые выглядят примерно так:
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-clause.)
Таблица ваших пользователей не имеет значения одобренного в нем. Он находится в таблице ваших статусов. Когда вы запрашиваете status_id, вы получите это значение обратно из этого запроса. Я думаю, вы должны сделать JOIN ON status_id
чтобы сделать эту работу. Или сделайте второй запрос.
Вы не присоединяетесь сюда:
SELECT * FROM Users U, Statuses S WHERE S.id=U.status_ID AND status_id = 2;