【发布时间】: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