У меня есть таблица с различными данными аппаратного обеспечения с столбцами «location_type» и «location_id» и две разные таблицы с местоположениями: номерами и людьми, оба имеют столбцы «id» и «name». Мне нужно получить одну строку «location_name» в результате, заполненную совпадающим номером или именем людей.MySQL JOIN столбцов разных таблиц в одном столбце
table_equipment
+------------------+---------------+-------------+
| name | location_type | location_id |
+------------------+---------------+-------------+
| ASUS P9X79 LE | room | 1 |
| 8 x Intel Core z | room | 2 |
| GeForce GTX 680 | people | 2 |
+------------------+---------------+-------------+
table_rooms
+------------------+----+
| name | id |
+------------------+----+
| Vault | 1 |
| Kitchen | 2 |
+------------------+----+
table_people
+------------------+----+
| name | id |
+------------------+----+
| John | 1 |
| Maria | 2 |
+------------------+----+
Result:
+------------------+---------------+-------------+---------------+
| name | location_type | location_id | location_name |
+------------------+---------------+-------------+---------------+
| ASUS P9X79 LE | room | 1 | Vault |
| 8 x Intel Core z | room | 2 | Kitchen |
| GeForce GTX 680 | people | 2 | Maria |
+------------------+---------------+-------------+---------------+
Как я могу это сделать в MySQL? Я попытался это:
SELECT t_eq.*, t_ppl.name AS loc_name, t_rm.name AS loc_name
FROM table_equipment AS t_eq
LEFT JOIN table_people AS t_ppl ON (t_eq.location_id=t_ppl.id AND t_eq.location_type='people')
LEFT JOIN table_rooms AS t_rm ON (t_eq.location_id=t_rm.id AND t_eq.location_type='room')
WHERE t_eq.location_type=0 OR t_eq.location_type=1 ORDER BY id;
Если вы хотите помочь с этой проблемой, то изменить свой вопрос и (1) добавить выборки данных из таблиц; (2) добавить результаты, которые вы хотели бы видеть; (3) добавить любые SQL-запросы, которые вы пытались решить вашу проблему. –
Спасибо, я добавил некоторую информацию. –