Oracle中缺少表达式错误

时间:2016-06-23 16:12:20

标签: sql oracle

SELECT DISTINCT manf FROM beers WHERE (SELECT price FROM sells WHERE price > 6);

问题是:用子查询写一个查询,找到啤酒卖的价格超过6美元的制造商。 这里的总菜鸟。

1 个答案:

答案 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;

但是,如果不知道表格的结构,很难给出准确的答案。