如果存在一个特定结果,如何包含选择的所有结果

时间:2017-09-26 07:26:58

标签: sql

我正在使用3张桌子。

  • 表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%') 

然而,这并不会返回我想要的结果。它还会从我输入的订单中返回订单,这些订单中没有任何产品的描述中包含单词stock。因为我对SQL很陌生,所以我觉得我在这里缺少一些基本的东西,但我无法理解它。

1 个答案:

答案 0 :(得分:0)

  
    

如果该产品在说明中的某处有“stock”字样,我会尝试选择订单中的每件商品。

  

为什么

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

然后而不是

where Table3.ProductDescription like '%stock%'

这已经是您正在寻找的答案了,还是在您想要的描述中不是真正具有“库存”的产品,而是您无法解释的其他内容?

(使用您的WHERE子句,您正在寻找字母表后面的所有产品,而不是第一个“库存”描述。即如果存在两个'库存'描述:'bstock'和'ystock',您将获得'ystock'和'xxx'和'zzz',但不是'bstock'和'abc',因为它们之前没有“库存”描述。)