loading..
Русский    English
21:23
листать

Эквисоединения стр. 2

Если требуется выполнить эквисоединение не по всем столбцам с совпадающими именами, а только по их части, тогда мы можем использовать соединение USING:

  1. Таблица_1 <тип соединения> JOIN  Таблица_2 USING(<список столбцов>)

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

Сравните результаты следующих запросов (предикат в предложении WHERE использован лишь для сокращения размера выборки).

Соединение строк из таблиц Income и Outcome по равенству значений в столбце date (база данных Фирма вторсырья)

  1. SELECT * FROM Income JOIN Outcome USING(date)
  2. WHERE MONTH(date) >= 4;

date    code    point    inc    code    point    out
2001-04-13 00:00:00    6    1    5000.00    7    1    4490.00
2001-04-13 00:00:00    10    1    5000.00    7    1    4490.00
2001-05-11 00:00:00    7    1    4500.00    9    1    2530.00
2001-09-13 00:00:00    12    3    1350.00    16    3    1200.00
2001-09-13 00:00:00    13    3    1750.00    16    3    1200.00
2001-09-13 00:00:00    12    3    1350.00    17    3    1500.00
2001-09-13 00:00:00    13    3    1750.00    17    3    1500.00

Соединение строк из таблиц Income и Outcome по равенству значений в столбцах date и point

  1. SELECT * FROM Income JOIN Outcome USING(date, point)
  2. WHERE MONTH(date) >= 4;

point    date    code    inc    code    out
1    2001-04-13 00:00:00    6    5000.00    7    4490.00
1    2001-04-13 00:00:00    10    5000.00    7    4490.00
1    2001-05-11 00:00:00    7    4500.00    9    2530.00
3    2001-09-13 00:00:00    12    1350.00    16    1200.00
3    2001-09-13 00:00:00    13    1750.00    16    1200.00
3    2001-09-13 00:00:00    12    1350.00    17    1500.00
3    2001-09-13 00:00:00    13    1750.00    17    1500.00

Соединение строк из таблиц Income и Outcome по равенству значений в столбцах date, point и code

  1. SELECT * FROM Income JOIN Outcome USING(date, point, code);
не возвращает строк.

Это соединение по всем столбцам с совпадающими именами эквивалентно естественному соединению

  1. SELECT * FROM Income NATURAL JOIN Outcome;

Чтобы продемонстрировать вывод в последнем варианте, воспользуемся левым соединением

  1. SELECT * FROM Income LEFT JOIN Outcome USING(date, point, code)
  2. WHERE MONTH(date) >= 4;

code    point    date    inc    out
6    1    2001-04-13 00:00:00    5000.00    NULL
7    1    2001-05-11 00:00:00    4500.00   NULL
10    1    2001-04-13 00:00:00    5000.00    NULL
12    3    2001-09-13 00:00:00    1350.00    NULL
13    3    2001-09-13 00:00:00    1750.00    NULL

Bookmark and Share
Страницы: 1 2
Тэги:
ALL AND AUTO_INCREMENT AVG battles CASE CAST CHAR CHARINDEX CHECK classes COALESCE CONSTRAINT Convert COUNT CROSS APPLY CTE DATEADD DATEDIFF DATENAME DATEPART DATETIME DDL DEFAULT DELETE DISTINCT DML EXCEPT EXISTS EXTRACT FOREIGN KEY FROM FULL JOIN GROUP BY Guadalcanal HAVING IDENTITY IN INFORMATION_SCHEMA INNER JOIN insert INTERSECT IS NOT NULL IS NULL ISNULL laptop LEFT LEFT OUTER JOIN LEN maker Больше тэгов
Учебник обновлялся
несколько дней назад
©SQL-EX,2008 [Развитие] [Связь] [О проекте] [Ссылки] [Team]
Перепечатка материалов сайта возможна только с разрешения автора.
Rambler's Top100