Объединить два набора данных с SQL-запросом

0

Я работаю с базой данных, которая имеет две разные таблицы. 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-запросом, который более эффективен.

  • 0
    Как соотносятся две таблицы? и использовать синтаксис JOIN, чтобы получить его. Если запись таблицы 1 не имеет значений в таблице 2, вы все еще хотите запись таблицы 1 или наоборот? Если это так, вам нужно использовать внешнее соединение (левое, правое или полное внешнее)
Теги:
database

3 ответа

2
Лучший ответ

Вы можете использовать концепцию join как показано ниже:

SELECT t1.id, 
       t1.firstname, 
       t1.lastname,
       t2.favoriteColor 
FROM table1 t1 
INNER JOIN table2 t2 
ON t1.id=t2.id
  • 0
    Хорошо, это здорово. Просто дополнительный вопрос. Что делать, если во второй таблице есть больше полей, которые мне не интересны. Как ограничить объединение только любимым цветом?
  • 0
    Используя t2.column_name вы можете выбрать любой столбец t2.column_name 2 согласно вашему требованию и добавить, where t2.column_name = your filter condition
Показать ещё 3 комментария
2

Используйте запрос INNER JOIN:

SELECT table1.id, table1.firstname, table1.lastname, table2.favoriteColor 
FROM table1 INNER JOIN table2 ON table1.id = table2.id
  • 1
    Ваш запрос также должен работать +1
  • 0
    table1.id не должен равняться table2.id. Я думаю, что оба будут PK на соответствующих столах. Теперь, если в table2 есть внешний ключ для table1, то это то, к чему нужно присоединиться
1

Фактически вы можете использовать любое из следующих объединений в вашем случае:

join

inner join

left join

Здесь идет очень хорошее объяснение: http://www.sql-join.com/sql-join-types/

Надеюсь, что это поможет вам!

  • 0
    Ссылка на решение приветствуется, но, пожалуйста, убедитесь, что ваш ответ полезен без нее: добавьте контекст вокруг ссылки, чтобы ваши пользователи имели представление о том, что это такое и почему, а затем процитируйте наиболее релевантную часть страницы, на которой вы находитесь. ссылка на случай, если целевая страница недоступна. Ответы, которые немного больше, чем ссылка, могут быть удалены. Пожалуйста, проверьте, как написать ответ . Добавьте больше деталей, чтобы оправдать свой ответ.
  • 1
    Спасибо за ваш комментарий Prateek. это был мой первый ответ. Я посмотрю, как написать ответный пост. Еще раз спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню