首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mind teaser SQL

Mind teaser SQL
EN

Stack Overflow用户
提问于 2011-05-05 14:30:32
回答 3查看 3.3K关注 0票数 3

我最近一直试图回答在http://www.sql-ex.ru/learn_exercises.php#answer_ref上发现的问题,因为我是sql方面的新手,从我以前关于sql的文章中可以看到这一点。我回答了这个问题:

练习: 23家制造商至少生产一台速度不低于750 MHz的pc和一台速度不低于750 MHz的笔记本电脑。结果集:制造者

以下是我的回答,这是不正确的,因为它使用或。有人可以给我一个链接搜索或者我应该使用什么连接来引导我找到一个好的方向吗?

代码语言:javascript
复制
  SELECT pt.maker    
    FROM product pt, 
         laptop l, 
         pc    
   WHERE (pt.model = pc.model 
     AND pc.speed >=750) 
      OR (pt.model = l.model 
     AND l.speed >=750)
GROUP BY pt.maker
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-05 14:36:31

关闭,如果表和列定义正确(我没有该站点的登录名),应该如下所示:

代码语言:javascript
复制
SELECT distinct pt_pc.maker
FROM  
  laptop l 
    inner join product pt_l on pt_l.model=l.model, 
  pc
    inner join product pt_pc on pt_pc.model=pc.model
WHERE pc.speed >=750 and l.speed >=750 and pt_l.maker=pt_pc.maker

基本上,你想要一台带有速度>=750的pc和一台带有速度>=750的笔记本电脑,这是由同一个人制造的。

票数 4
EN

Stack Overflow用户

发布于 2011-05-05 14:41:38

假设支持INTERSECT

代码语言:javascript
复制
SELECT  maker
FROM    product p
JOIN    laptop l
ON      l.model = p.model
WHERE   speed >= 750
INTERSECT
SELECT  maker
FROM    product p
JOIN    pc
ON      pc.model = p.model
WHERE   speed >= 750

跨平台:

代码语言:javascript
复制
SELECT  maker
FROM    (
        SELECT  maker, 1 AS source
        FROM    product p
        JOIN    laptop l
        ON      l.model = p.model
        WHERE   speed >= 750
        UNION
        SELECT  maker, 2 AS source
        FROM    product p
        JOIN    pc
        ON      pc.model = p.model
        WHERE   speed >= 750
        ) q
GROUP BY
        maker
HAVING  COUNT(*) = 2
票数 4
EN

Stack Overflow用户

发布于 2014-07-13 05:34:54

代码语言:javascript
复制
SELECT DISTINCT maker 
FROM product 
WHERE   maker IN (SELECT DISTINCT maker 
                  FROM product AS a 
                  INNER JOIN (SELECT DISTINCT model 
                              FROM pc 
                              WHERE speed>=750) AS b  ON a.model=b.model)
        AND maker IN (SELECT DISTINCT maker 
                      FROM product AS a 
                      INNER JOIN (SELECT DISTINCT model 
                                  FROM laptop 
                                  WHERE speed>=750) AS b ON a.model=b.model)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5899424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档