2

我希望那里有人可以提供帮助。我对这一切都很陌生,我被困住了。我有 3 个表,我试图从中提取数据:

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

员工(empid、firstname、lastname、salary、sale、salesdate、custid、locationid)

位置(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。谁能看到我做错了什么?

4

2 回答 2

1

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

然后使用:

SELECT * 
FROM   CUSTOMER C, LOCATION L, EMPLOYEE E 
WHERE  C.EMPID = '11111' 
   AND E.EMPID = '11111' 
   AND E.locationid = l.locationid
于 2012-08-25T17:36:43.947 回答
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';
于 2012-08-25T17:51:27.093 回答