2

私はそこに助けてくれる誰かがいることを望んでいます。私はこれらすべてに非常に慣れておらず、行き詰まっています。データを取得しようとしているテーブルが3つあります。

顧客(custid、first、last、pointsclubno、survey no、order date、order tot)

従業員(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をプルし、2番目のクエリは10をプルします。誰かが私が間違っていることを確認できますか?

4

2 に答える 2

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 に答える
1

私はすでにあなたのデータベーススキーマに間違ったロジックがあると思いますか?顧客テーブルにempidを追加し、employeesテーブルから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 に答える