#php #mysql
#php #mysql
Вопрос:
Цель состоит в том, чтобы вернуть объект json для Javascript XMLHttpRequest.
Возвращаемый объект будет (пример):
[{"id": "6", "name": "Roger Coleman","start": "1612738800000", "end": "1613257200000", "color": "#FF0000"}, {"id": "7", "name": "Joe Jackson","start": "1615417200000", "end": "1618178399000", "color": "#0000FF"}]
Проблема, с которой я сталкиваюсь, заключается в следующем: значения «color» поступают из другой таблицы.
Итак, мне нужно запустить первый запрос:
SELECT id, start_date, end_date, name FROM table1 WHERE category='$category'
И для каждого значения имени, возвращаемого в каждой строке, мне нужно запустить другой запрос, чтобы получить цвет из другой таблицы:
SELECT color from table2 WHERE name='$name'
Как я могу «объединить» результат двух запросов, чтобы я мог вернуть его в одном объекте json в XMLHttpRequest?
Комментарии:
1. Читайте о
JOIN
: dev.mysql.com/doc/refman/5.7/en/join.html
Ответ №1:
Чтобы решить эту проблему, вы можете использовать предложение JOIN . Предложение join объединяет строки из двух или более таблиц на основе общего столбца, который в вашем случае является name
столбцом.
SQL для решения вашей проблемы:
SELECT id, start_date, end_date, table1.name AS name, color
FROM table1
JOIN table2 ON table1.name = table2.name
WHERE category = "$category"
Обратите внимание, что в предложении SELECT я использовал table1.name AS name
, потому что столбец name
присутствует в обеих таблицах, и он будет генерировать ошибку, связанную с дублированием столбца name
.