【问题标题】:Query to find all bars that sell three different beers at the same price查询以相同价格出售三种不同啤酒的所有酒吧
【发布时间】:2010-05-04 03:12:06
【问题描述】:

查询以查找“以相同价格出售三种不同啤酒的所有酒吧?”

我的桌子是

Sells(bar,beer,price) - bar - foreign Key.. Bars(name,addr) - 命名主键。

我想过这样的事情,但那个剂量似乎有效......

 Select A.bar As bar , B.bar as bar  
 From Sells AS A, Sells AS B 
 Where A.bar = B.bar and A.beer <> B.beer  
 Group By(A.beer) 
 Having Count(Distinct A.beer) >= 2

这是正确的 SQL 查询吗?

【问题讨论】:

  • 嗯,有一个主题会吸引人们! :)

标签: php mysql


【解决方案1】:

我会这样做:

Select A.bar
From Sells AS A
JOIN Sells AS B ON (A.bar = B.bar AND A.price = B.price 
    AND A.beer <> B.beer)
JOIN Sells AS C ON (A.bar = C.bar AND A.price = C.price 
    AND A.beer <> C.beer AND B.beer <> C.beer)

尤其是在 MySQL 中,join 解决方案可能比GROUP BY 更有效。

【讨论】:

    【解决方案2】:
    Select ...
    From Bars As B
    Where Exists    (
                    Select 1
                    From Sells As S1
                    Where Exists    (
                                    Select 1
                                    From Sells As S2
                                    Where S2.bar = S1.bar
                                        And S2.beer <> S1.beer
                                        And S2.price = S1.price
                                    )
                        And S1.Bar = B.name
                    Having Count(*) = 3     
                    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-10
      • 1970-01-01
      • 1970-01-01
      • 2014-08-03
      相关资源
      最近更新 更多