【问题标题】:SQL oracle, display the output correctlySQL oracle,正确显示输出
【发布时间】:2013-02-25 22:23:42
【问题描述】:

我对输出有点卡住......

问题: 需要列出组和属于每个组的成员。对于每个组,显示唯一标识符及其名称(如果有)。对于每个成员,显示其组长的唯一标识符、姓名、性别、出生日期和标识符。在每个组中,按姓氏和名字对成员进行排序。

我的回答:

  SELECT 
      P.Name,
      P.DOB,
      P.Gender,
      G.GroupName,
      GL.PersonId   
FROM Person P
INNER JOIN GroupMember GM ON GM.PersonId =  P.PersonId
INNER JOIN Group G ON G.GroupId =  P.GroupId
INNER JOIN GroupLeader GL ON GL.GroupId = G.GroupId 

问题是,如何使用逻辑 ERD 正确显示此问题,并将其放在本文顶部....

我的回答是这样的:但是我创建了这个表,或者我错过了一些想法((

ORA-00942: table or view does not exist

【问题讨论】:

  • 给定您的 ERD 的唯一有效表名是 Person,其余的未在您的图表中列出。
  • 您能解释一下我必须如何以正确的方式列出它以使其正确显示吗?
  • gMember 不是有效的表名 - 您的表名为“GroupMember” - groupTab 和 gLeader 也是如此
  • 我马上编辑..
  • 我只是重命名它们))当我用数据做我的实际表格时

标签: sql database oracle select inner-join


【解决方案1】:

这个:

 INNER JOIN gLeader GL ON GL.group_idG.group_id 

无效。不应该是这样吗?

 INNER JOIN gLeader GL ON GL.group_id = G.group_id 

编辑从这里开始

从这里开始:

SELECT 

  -- P.Name
  -- , P.DOB
  -- , P.Gender
  -- , G.GroupName
  -- , GL.PersonId   

 count(*)
 FROM Person P
 -- INNER JOIN GroupMember GM ON GM.PersonId =  P.PersonId
 -- INNER JOIN Group G ON G.GroupId =  P.GroupId
 -- INNER JOIN GroupLeader GL ON GL.GroupId = G.GroupId 
 where 1=2

如果运行成功,则逐行取消注释 from 子句的其余部分并每次运行它。如果您没有收到任何错误,请从 select 子句中删除 count(*),并取消注释每个字段,直到您收到错误为止。然后你就会知道问题出在哪里了。

如果第一次出错,您可能必须使用数据库名称或他们在 oracle 中所称的任何名称来限定您的表名。我在工作中不得不做这两种类型的事情。

from database.tablenam

 from "database"."tablename"

【讨论】:

猜你喜欢
  • 2015-07-09
  • 2019-01-05
  • 1970-01-01
  • 2018-01-17
  • 2013-05-15
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多