КОГДА ВЫ МОЖЕТЕ ДЕЛАТЬ ОБЪЕДИНЕНИЕ МЕЖДУ ЗАПРОСАМИ ?
Когда два ( или более ) запроса
подвергаются объединению, их столбцы вывода должны быть совместимы для объединения. Это означает, что
каждый
запрос должен указывать одинаковое число столбцов и в том же порядке что и первый, второй, третий, и так
далее, и
каждый должен иметь тип, совместимый с каждым. Значение совместимости типов - меняется. ANSI следит за
этим очень
строго и поэтому числовые поля должны иметь одинаковый числовой тип и размер, хотя некоторые имена
испрользуемые
ANSI для этих типов являются - синонимами.
Кроме того, символьные поля должны иметь одинаковое число символов ( значение предначначенного номера,
не
обязательно такое же как используемый номер ). Хорошо, что некоторые SQL программы обладают большей
гибкостью чем
это определяется ANSI. Типы не определенные ANSI, такие как DATA и BINARY, обычно должны совпадать с
другими
столбцами такого же нестандартного типа. Длина строки также может стать проблемой. Большинство
программ разрешают
поля переменной длины, но они не обязательно будут использоваться с UNION. С другой стороны, некоторые
программы (и
ANSI тоже) требуют чтобы символьные поля были точно равной длины. В этих вопросах вы должны
проконсультироваться
с документацией вашей собственной программы. Другое ограничение на совместимость - это когда пустые
значения(NULL) запрещены в любом столбце объединения, причем эти значения необходимо запретить и для
всех
соответствующих столбцов в других запросах объединения. Пустые значения(NULL) запрещены с ограничением
NOT
NULL. Кроме того, вы не можете использовать UNION в подзапросах, а также не
можете использовать агрегатные функции в предложениии SELECT запроса в объединении. ( Большинство
программ
пренебрегают этими ограничениями. )