2017-09-26 44 views
0

我正在使用3個表。如何包含select中的所有結果(如果存在一個特定結果)

  • 表1 - 存儲有關訂單的信息。
  • 表2 - 在這些訂單存儲有關產品的信息
  • 表3 - 關於產品

店的詳細信息下面是我使用的查詢。

select Table1.OrderNumber as Ordernummer, 
     Table2.Productnumber as ArtikelNummer, 
     Table3.Productdescription as ArtikelOmschrijving, 
     Table2.Amount as Aantal, 
     Table2.SellingPrice as PrijsPerArtikel from Table1 
      INNER JOIN Table2 ON Table2.OrderKey = Table1.OrderKey 
      INNER JOIN Table3 ON Table3.ProductNumber = Table2.ProductNumber 
    where Table3.ProductDescription > any (select ProductDescription from table3 where ProductDescription like '%stock%') and 
table1.OrderNumber in ( 
*ALotOfOrderNumbers* 
) 

有了這個部分我想選擇一個開始按每產品,如果該產品有詞'stock'某處描述。

Table3.ProductDescription > any (select ProductDescription from table3 where ProductDescription like '%stock%') 

但是,這不會返回我想要的結果。它還會根據我放入的訂單返回訂單,這些訂單在描述中沒有任何帶有庫存字樣的產品。由於我對SQL非常陌生,因此我覺得我缺少一些基本的東西,但我無法弄清楚。

+0

請爲所有3個表格添加示例數據,並將您想要的輸出添加到您的問題 – zarruq

回答

0

我想在如發現產品有詞「存量」某處描述的順序來選擇每一個產品。

那麼,爲什麼

where Table3.ProductDescription > any 
     (select ProductDescription from table3 where ProductDescription like '%stock%') 

然後,而不是

where Table3.ProductDescription like '%stock%' 

這是已經你正在尋找的答案還是沒有真正的產品在他們的描述中「存量」你正在尋找,但其他的東西你沒有解釋? (如果存在兩個「庫存」描述:'bstock'和'ystock',那麼您將在第一個'庫存'描述中尋找所有比字母后面的字母更長的產品獲得「ystock」和「XXX」和「ZZZ」,而不是「bstock」和「ABC」,因爲他們之前沒有「存量」的說明。)

-1
SELECT  table1.ordernumber  AS ordernummer, 
     table2.productnumber  AS artikelnummer, 
     table3.productdescription AS artikelomschrijving, 
     table2.amount    AS aantal, 
     table2.sellingprice  AS prijsperartikel 
FROM  table1 
INNER JOIN table2 
ON   table2.orderkey = table1.orderkey 
INNER JOIN table3 
ON   table3.productnumber = table2.productnumber 
WHERE  table3.productdescription > ANY 
     ( 
       SELECT productdescription 
       FROM table3 
       WHERE productdescription LIKE '%stock%') 
AND  table3.productdescription LIKE 'stock%' 
AND  table1.ordernumber IN (*alotofordernumbers*) 

檢查這一項。

+0

這不是一個答案,而只是一個查詢。請添加一些關於您的查詢如何解決問題的信息。您的查詢選擇除了字母表中的第一個(即「stock_a」,「stock_b」和「stock_c」,您選擇'stock_b'和'stock_c')之外的所有訂單產品的描述中的「庫存」。你爲什麼認爲這會得到Martijn之後的結果?我在他的要求中沒有看到這一點。 –

+0

在這種情況下,從%3刪除%.productdescription Like'stock%'並執行 –

+0

否,請編輯您的答案並用文字說出您的查詢與原始查詢有什麼不同,以及如何解決問題。到目前爲止,你還沒有給出答案,只是寫了一些詢問,並附上「檢查這一個」的評論。爲什麼?你的查詢應該做什麼?爲什麼你認爲他現在應該使用'股票%'?那會發生什麼變化? Martijn是否說過,與股票相關的描述應該區別對待?我沒有看到他的要求。 –

相關問題