Соединение двух таблиц не позволяет использовать их - PullRequest
2 голосов
/ 13 февраля 2012

Мне нужно получить данные из двух таблиц SQL, но я не уверен, какое соединение использовать, и у тех же таблиц одна и та же таблица customers_id. Могу ли я использовать внутреннее соединение?

table - customers

customers_id
customers_firstname
customers_lastname
customers_email_address

table - orders


customers_id
customers_street_address
customers_suburb
customers_city
customers_postcode
customers_state
customers_country

Ответы [ 4 ]

1 голос
/ 13 февраля 2012

Это зависит от того, какие результаты вы хотите.Если вы хотите, чтобы каждая запись в Customer была независимо от того, есть ли соответствующая запись в заказах, вы должны использовать LEFT OUTER JOIN.Если нет, вы бы использовали INNER JOIN. Это статья Я обычно отсылаю людей за базовым объяснением объединений.

INNER JOIN будет выглядеть так:

SELECT c.customers_id, 
       c.customers_firstname, 
       c.customers_lastname, 
       o.customers_street_address,
       o.customers_city,
       o.customers_postcode,
       o.customers_state
FROM customers as c
INNER JOIN orders as o
ON c.customers_id = o.customers_id

Я специально несделать select *.Попробуйте привыкнуть к выбору нужных столбцов из таблиц вместо всего.

0 голосов
/ 13 февраля 2012

одинаковые таблицы имеют одинаковые customers_id таблицы

Я думаю, что вы хотели сказать, что у них есть общий столбец: customers_id, и в этом случае вы можете использовать NATURAL JOIN.

0 голосов
/ 13 февраля 2012

Соединение, которое вы должны использовать, зависит от того, какую информацию вы пытаетесь сохранить, основываясь на идентификаторе клиента. Если вы хотите сохранить всю информацию из customers, даже если нет совпадения с orders, вы должны использовать левое соединение . И наоборот, если вы хотите сохранить всю информацию из orders, даже если не было совпадения с customers, вы бы использовали правое объединение .

Если вы хотите вернуть всю информацию и объединить строки, которые совпадают, используйте full join . Наконец, вы можете использовать внутреннее объединение , если вы только хотите получить строки, которые совпадают из любой таблицы.

0 голосов
/ 13 февраля 2012

ВНУТРЕННЕЕ СОЕДИНЕНИЕ Да, вы можете использовать его.

Вы можете написать запрос ниже, чтобы получить все данные из двух таблиц. Я собираюсь написать полный запрос на соединение для вас. Y

select customers.customers_firstname,
       customers.customer_lastname,
       orders.customers_city 
from customers 
INNER JOIN orders 
  ON customer.customers_id = orders.customers_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...