Мне нужно отображать имя и фамилию, адрес и дату рождения только для всех клиентов, которые проживают только на проспекте «Петерс» или «Вороний».
Это нормально, я сделал так:
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.
Итак, я немного прочитал UNION
s, но в основном я вижу, что возвращаемые значения из обоих запросов 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 – нет)