2016-06-23 93 views
-2
SELECT DISTINCT manf FROM beers WHERE (SELECT price FROM sells WHERE price > 6); 

现在的问题是:使用子查询编写查询来查找制造商哪里的啤酒每个地方销售价格超过6美元。 这里总noob。在Oracle中缺少表达式错误

+0

啤酒和啤酒如何相互交谈?销售中是否有manf专栏?你需要加入一个告诉卖什么制造商? 哪里(选择价格FROM卖WHERE价格> 6和manf.beers = manf.sells) –

+0

你说问题是:*写一个查询... *。这不是问题。也许你的问题可能是,为什么Oracle抱怨一个*缺少表达式*错误?现在这是一个问题。 – sstan

+0

不知道你的桌子是什么样子,要给出答案是非常困难的。此外,您的“问题”不会提出任何问题(以问号“?”结尾)。还请详细说明“无处不在”。你是什​​么意思?请**编辑**您的问题并改进它! –

回答

-1

您将需要加入表格。我假设sells表有一个beer_id,您可以用它链接到beers表。

SELECT DISTINCT 
    beers.manf 
FROM 
    sells 
    INNER JOIN beers 
     ON sells.beer_name = beers.beer_name 
WHERE 
    sells.price > 6 
ORDER BY beers.manf; 

这将返回所有制造商至少有一个成本超过6美元。


但是,如果制造商的所有啤酒必须花费超过$ 6于是做

SELECT DISTINCT 
    beers.manf 
FROM 
    sells 
    INNER JOIN beers 
     ON sells.beer_name = beers.beer_name 
WHERE 
    sells.price > 6 AND 
    beers.manf NOT IN (SELECT b.manf 
         FROM sells s INNER JOIN beers b ON s.beer_name = b.beer_name 
         WHERE s.price <= 6) 
ORDER BY beers.manf; 

但是,不知道你的表的结构,很难给你一个确切的答案。

+0

感谢您的快速响应。没有啤酒ID。啤酒表只包含名称和制造商 –

+0

这两个表'卖'和'啤酒'必须有一个共同的列。否则,你不能在它们之间建立关系!请告诉我们两张桌子的栏目。还是有第三张桌子?否则,我们正在黑暗中窃听。 –

+0

他们有一个共同的啤酒名称列 –