Как сделать UNION на одной таблице?

Мне нужно отображать имя и фамилию, адрес и дату рождения только для всех клиентов, которые проживают только на проспекте «Петерс» или «Вороний».

Это нормально, я сделал так:

SELECT Customers.FirstName, Customers.Surname,
       Customers.CustomerAddress, Customers.DOB
FROM Customers
WHERE 
(  Customers.CustomerAddress LIKE '%'+ 'Peters' + '%' 
or Customers.CustomerAddress LIKE '%'+ 'Crows'+ '%')

но потом я прочитал немного внимательнее, и там было:

Use a UNION query to produce the results.

Итак, я немного прочитал UNIONs, но в основном я вижу, что возвращаемые значения из обоих запросов SELECT должны иметь одинаковую длину , и обычно в примерах используются 2 разных столы?

Поэтому мне нужно выполнить UNIONдля той же таблицы, чтобы были показаны все клиенты со словами Peters и Crows в адресе. Я пытался:

SELECT Customers.CustomerAddress
FROM Customers
WHERE 
(  Customers.CustomerAddress LIKE '%'+ 'Peters' + '%'
or Customers.CustomerAddress LIKE '%'+ 'Crows'+ '%')
UNION
SELECT Customers.FirstName, Customers.Surname,
       Customers.CustomerAddress, Customers.DOB
FROM Customers

Но я получаю ошибку:

All queries combined using a UNION, INTERSECT or EXCEPT operator must have an equal number of expressions in their target lists.

что понятно, потому что мой первый SELECT возвращает только 3 результата (, то есть результаты, которые я ищу ), в то время как другой возвращает все адресованные (, включая те, которые мне нужны ).

Итак, моя точная проблема заключается в том, как мне выполнить UNIONв той же таблице (Всего клиентов 10 записей ), чтобы все клиенты со словами Peters и Вороны в свой адрес проявляются?(3 записи соответствуют условию, а остальные 7 – нет)

9
задан Mat 23 September 2012 в 09:44
поделиться