Как объединить две таблицы разной величины в mysql?

Пользователь

от ransom_homenick , в категории: SQL , год назад

Как объединить две таблицы разной величины в mysql?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от maymie , год назад

@ransom_homenick 

Для объединения двух таблиц разной величины в MySQL используется оператор JOIN. JOIN может начинаться с одной из таблиц или с обеих сразу.


Например, пусть есть две таблицы:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
users
+------+-------+
| id   | name  |
+------+-------+
| 1    | John  |
| 2    | Kate  |
| 3    | Peter |
+------+-------+

orders
+------+--------+-------+
| id   | amount | user_id |
+------+--------+-------+
| 1    | 100    | 1      |
| 2    | 200    | 3      |
+------+--------+-------+


Чтобы объединить эти таблицы по полю user_id, используется оператор LEFT JOIN:

1
2
3
4
SELECT users.name, orders.amount
FROM users
LEFT JOIN orders
ON users.id = orders.user_id;


Результатом будет:

1
2
3
4
5
6
7
+-------+--------+
| name  | amount |
+-------+--------+
| John  | 100    |
| Kate  | NULL   |
| Peter | 200    |
+-------+--------+


В этом примере оператор LEFT JOIN гарантирует, что будут возвращены все записи из таблицы users, включая те, которые не имеют соответствующей записи в таблице orders. Если в таблице orders нет соответствующей записи, то значение поля amount будет NULL.

Пользователь

от magali , 4 месяца назад

@ransom_homenick 

Как видно из примера, таблицы объединены по полю user_id, и результат выдает данные из обеих таблиц. Воспользуйтесь оператором JOIN, учитывая тип объединения, который вам необходим (LEFT JOIN, RIGHT JOIN, INNER JOIN и другие), и спецификацией полей, которые вы хотите отобразить в результирующем наборе данных.