Я работаю с базой данных, которая имеет две разные таблицы. 1 для полей по умолчанию и 1 для полей, добавленных пользователем, и это приводит к разделению некоторых данных, которые мне нужно получить в этих двух таблицах.
SELECT * FROM table1
Результат:
[0] {id: 1, firstname: 'John', lastname: 'Smith'}
[1] {id: 2, firstname: 'Michael', lastname:'Jones'}
...
[99] {id: 100, firstname: 'Jerry', lastname:'Brown'}
а также
SELECT * FROM table2
Результат:
[0] {id: 1, favoriteColor: 'Blue'}
[1] {id: 2, favoriteColor: 'Yellow'}
...
[99] {id: 100, favoriteColor: 'Green'}
Я хотел бы объединить два набора данных в 1 со всей информацией: id, firstname, lastname и favoriteColor.
Я знаю, как это сделать с помощью двух разных запросов и запуска скрипта php/js по результатам. Но я уверен, что есть способ сделать это только с одним SQL-запросом, который более эффективен.
Вы можете использовать концепцию join
как показано ниже:
SELECT t1.id,
t1.firstname,
t1.lastname,
t2.favoriteColor
FROM table1 t1
INNER JOIN table2 t2
ON t1.id=t2.id
t2.column_name
вы можете выбрать любой столбец t2.column_name
2 согласно вашему требованию и добавить, where t2.column_name = your filter condition
Используйте запрос INNER JOIN
:
SELECT table1.id, table1.firstname, table1.lastname, table2.favoriteColor
FROM table1 INNER JOIN table2 ON table1.id = table2.id
Фактически вы можете использовать любое из следующих объединений в вашем случае:
join
inner join
left join
Здесь идет очень хорошее объяснение: http://www.sql-join.com/sql-join-types/
Надеюсь, что это поможет вам!