Объединение по именам столбцов
Объединение по именам столбцов
Объединение по именам столбцов похоже на естественное, но является более гибким. При естественном объединении проверяется равенство значений из всех одноименных столбцов, которые только имеются в исходных таблицах. А что касается объединения по именам столбцов, то в нем можно выбирать, какие одноименные столбцы должны проверяться, а какие — нет. Если хотите, то можете выбрать их все, фактически превращая объединение по именам столбцов в естественное. Можете также выбрать и меньшее количество этих столбцов. Таким образом, есть возможность в большей степени определить, какие строки из перекрестного произведения должны оказаться в полученной вами итоговой таблице.
Скажем, вы изготовитель шахмат и имеете инвентарную таблицу, в которой хранятся данные о белых фигурах, а также другую такую же таблицу, но с данными о черных фигурах. Эти таблицы называются WHITE (белая) и BLACK (черная), и в каждой из них имеются следующие поля: Piece (фигура), Quant (количество), Wood (дерево). В таблицах хранятся такие данные:
WHITE | BLACK | ||||
-------- | -------- | ||||
Piece | Quant | Wood | Piece | Quant | Wood |
------ | ------- | ------- | ------ | ------- | ------- |
King | 502 | Oak | King | 502 | Ebony |
Queen | 398 | Oak | Queen | 397 | Ebony |
Rook | 1020 | Oak | Rook | 1020 | Ebony |
Bishop | 985 | Oak | Bishop | 985 | Ebony |
Knight | 950 | Oak | Knight | 950 | Ebony |
Pawn | 431 | Oak | Pawn | 431 | Ebony |
Для каждой разновидности фигур — короля (King), королевы (Queen), ладьи (Rook), слона (Bishop), коня (Knight), пешки (Pawn), — изготавливаемых из дуба (Oak) или из черного дерева (Ebony), количество белых и черных фигур должно быть равным. Если же равенство нарушено, то это означает, что некоторые фигуры или потеряны, или украдены, и, следовательно, вам надо улучшить условия хранения товара.
При естественном объединении проверяется равенство значений во всех одноименных столбцах. В таком случае получится пустая таблица, потому что в таблице WHITE нет таких строк, где значение в столбце Wood бьло бы равно какому-либо значению из столбца Wood таблицы BLACK. Таблица, полученная в результате естественного объединения, не позволит определить, пропало что-нибудь или нет. Поэтому надо использовать объединение по именам столбцов, в котором столбец Wood исключается из рассмотрения. Это объединение может быть представлено в таком виде:
SELECT *
FROM WHITE JOIN BLACK
USING (Piese, Quant) ;
В результате объединения получается таблица только с теми строками, в которых количество белых и черных фигур, имеющихся на складе, совпадает:
Piece | Quant | Wood | Piece | Quant | Wood |
------ | ------- | ------- | ------ | ------- | ------- |
King | 502 | Oak | King | 502 | Ebony |
Rook | 1020 | Oak | Rook | 1020 | Ebony |
Bishop | 985 | Oak | Bishop | 985 | Ebony |
Knight | 950 | Oak | Knight | 950 | Ebony |
Внимательный читатель может заметить, что из списка пропали королева и пешка, — признак того, что каких-либо из этих фигур не хватает.