【问题标题】:Selecting data from 3 tables using SQL in Oracle在 Oracle 中使用 SQL 从 3 个表中选择数据
【发布时间】:2012-08-25 17:27:23
【问题描述】:

我希望有人可以提供帮助。我对这一切非常陌生,我被困住了。我有 3 个表要从中提取数据:

客户(custid、first、last、pointsclubno、调查编号、订单日期、订单总数)

员工(empid、名字、姓氏、薪水、销售、销售日期、保管人、位置 ID)

位置(locationid、地址、城市、州)

我正在尝试选择由员工服务的客户以及它发生的位置。我首先尝试了这个查询:

SELECT EMPLOYEE.EMPID, FIRST, LAST, LOCATION.LOCATIONID
FROM   EMPLOYEE, CUSTOMER, LOCATION  
WHERE  EMPID = '111111'
   AND EMPLOYEE.LOCATIONID = LOCATION.LOCATIONID;

未选择任何行。

然后这个查询:

SELECT EMPLOYEE.EMPID, FIRST, LAST, LOCATION.LOCATIONID
FROM   EMPLOYEE, CUSTOMER,LOCATION
WHERE  EMPID = '111111'
   AND EMPLOYEE.LOCATIONID = LOCATION.LOCATIONID;

 EMPID FIRST     LAST     LOCATIONID

111111 BOB       JONES      1267
111111 JIM       DAVIS      1267
111111 SCOTT     CONKLIN        1267
111111 DAN       ORTIZ      1267
111111 BRIAN     JOHNSON        1267
111111 TOM       MANN       1267
111111 LIZ       HENSLEY        1267
111111 BARB      BUTLER     1267
111111 MARIE     ANTON      1267
111111 JOE       SMITH      1267

已选择 10 行。

根据表格的设置方式,这应该只拉 1 行。如您所见,第一个查询拉 0,第二个拉 10。谁能看到我做错了什么?

【问题讨论】:

  • 我已经认为您的数据库架构中有错误的逻辑?您应该在客户表中添加 empid 并从员工表中删除 custid 吗?因为每个员工可以服务很多客户?
  • 至少应该有 4 个表:Employee、Location、Customer、Order。但我怀疑您的模型可能会使用更多。

标签: sql


【解决方案1】:

试试这个:[你没有加入客户和员工表]

SELECT 
EMPLOYEE.EMPID, 
FIRST, LAST, 
LOCATION.LOCATIONID 
FROM CUSTOMER, EMPLOYEE, LOCATION
WHERE 
CUSTOMER.CUSTID = EMPLOYEE.CUSTID AND
EMPLOYEE.LOCATIONID = LOCATION.LOCATIONID AND
AND EMPLOYEE.EMPID = '111111';

【讨论】:

    【解决方案2】:

    我已经认为您的数据库架构中有错误的逻辑?您应该在客户表中添加 empid 并从员工表中删除 custid 吗?因为每个员工可以服务很多客户?

    然后使用:

    SELECT * 
    FROM   CUSTOMER C, LOCATION L, EMPLOYEE E 
    WHERE  C.EMPID = '11111' 
       AND E.EMPID = '11111' 
       AND E.locationid = l.locationid
    

    【讨论】:

    • 还是有问题。一个客户也可以由许多员工服务;-)
    • 这取决于他的逻辑,如果一个客户也可以有很多员工服务,他应该添加新表,一点问题都没有:)
    猜你喜欢
    • 2014-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-25
    • 2011-08-04
    • 2022-12-09
    相关资源
    最近更新 更多