11

「ピーターズ」または「クロウズ」アベニューのみに居住するすべての顧客の名前と姓、住所、生年月日を表示する必要があります。

これは問題ありません。次のようにしました。

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

しかし、それからもう少し詳しく読んだところ、次のように書かれていました。

UNION クエリを使用して結果を生成します。

だから私はUNIONs について少し調べましたが、ほとんどの場合、両方のSELECTクエリから返される値は同じ長さでなければならず、通常、例では 2 つの異なるテーブルを使用していますか?

そのため、住所にPetersCrowsUNIONという単語が含まれるすべての顧客が表示されるように、同じテーブルでa を実行する必要があります。私は試した:

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

しかし、私はエラーが発生します:

UNION、INTERSECT、または EXCEPT 演算子を使用して結合されたすべてのクエリでは、ターゲット リストに同じ数の式が含まれている必要があります。

最初のSELECTは 3 つの結果 (つまり、探している結果) のみを返し、もう 1 つはアドレス指定されたすべて (必要なものを含む) を返すため、これは理解できます。

したがって、私の正確な問題は、住所にPetersCrowsUNIONという単語が含まれるすべての顧客が表示されるように、同じテーブル (Customers 合計 10 レコード) でa を実行するにはどうすればよいですか? (3 件のレコードが条件に一致し、他の 7 件は一致しません)

4

3 に答える 3

10
 SELECT Customers.FirstName, Customers.Surname,  Customers.DOB, Customers.CustomerAddress
 FROM Customers
 WHERE Customers.CustomerAddress LIKE '%'+ 'Main' + '%'  
 UNION
 SELECT Customers.FirstName, Customers.Surname,  Customers.DOB, Customers.CustomerAddress
 FROM Customers
 WHERE Customers.CustomerAddress LIKE '%'+ 'Gladys'+ '%'

ユニオンでは、2 つ以上のクエリのSELECTステートメント内に常に同じ数のフィールドが必要です。WHERE句は、ユニオンクエリの問題のようです。

于 2012-08-19T12:51:04.193 に答える
2

2 つのセットをマージできるようにする場合は、返されたセットの両方が同じ形式である必要があります。最初のセットは顧客の住所のみを返します。次に例を示します。

123 Main St

しかし、2 番目のクエリから返されたセットは、姓、名、生年月日という 3 つの列を返します。例えば:

John, Doe, 1970-12-31

したがって、両方のクエリが同じ列のセットを返すようにして、それらをマージできるようにします。たとえば、4 つの列すべてを含めます。

Jane, Smith, 1975-11-22, 123 Main St

John, Doe, 1970-12-31,  89 Elm St

同じ数、同じ順序、同じタイプの列を使用すると、2 つのセットを UNION でマージできます。

Jane, Smith, 1975-11-22, 123 Main St
John, Doe, 1970-12-31,  89 Elm St

また、UNION と UNION ALL をよく読んで区別してください。

于 2012-08-19T12:50:00.673 に答える