Запросы MySQL в одном объекте Json

#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 .