分组由几个结果SQL Oracle

时间:2015-10-19 15:26:52

标签: sql oracle group-by

我希望将结果按属性分组。

以下是我想要检索的示例: enter image description here

以下是表格定义: enter image description here

我尝试了这个,但它不起作用:

SELECT      OWNER.NAME, DOG.DOGNAME
WHERE       OWNER.ID = DOG.OWNER_ID
AND         OWNER.NAME = (SELECT OWNER.NAME FROM OWNER);

但它给我一个错误:

  
      
  1. 00000 - "单行子查询返回多行"
  2.   

非常感谢!

3 个答案:

答案 0 :(得分:1)

我不是Oracle专家,但我相信您需要FROMJOIN部分:-):

http://sqlfiddle.com/#!4/f8630/1

SELECT      OWNER.ID, OWNER.NAME,
            DOG.ID, DOG.DOGNAME
FROM        OWNER
LEFT JOIN   DOG
ON          OWNER.ID = DOG.OWNER_ID;

答案 1 :(得分:1)

修改根据Alex的回复,该查询的修改版本为:

SELECT OWNER.NAME, DOG.DOGNAME FROM OWNER LEFT JOIN DOG ON OWNER.ID = DOG.OWNER_ID ORDER BY OWNER.NAME

答案 2 :(得分:0)

首先,你错过了表子句:

如果你把它们放进去,如果你有多个拥有相同名字的所有者,那么你仍然会遇到问题,其中where子句中的子选择返回多行:

AND OWNER.NAME =(从OWNER中选择OWNER.NAME);

如果NAME不明显,则会引发错误。

您可以将其更改为:

AND OWNER.NAME IN(从OWNER中选择OWNER.NAME);

虽然在这种情况下整个子句没有意义,因为整个表将始终返回

最终答案:

SELECT      OWNER.NAME, DOG.DOGNAME
FROM        OWNER, DOG
WHERE       OWNER.ID = DOG.OWNER_ID;