2017-10-23 17 views
-2

私は以下の3つのテーブル(アカウント、顧客、従業員)を持っており、AGENT_CODE & AGENT_TYPEの列に基づいてそれらを結合したいと思います。親テーブルの列に基づくSQLクエリ

AGENT_CODEをCUSTOMER & EMPLOYEEテーブルで同じにすることができる場合は、これらのテーブルを結合するにはどうすればよいでしょうか?

は、私は私に間違った結果

SELECT ac.AGENT_CODE, 
ac.WORKING_AREA, 
ac.AGENT_TYPE, 
CONCAT(c.FIRST_NAME,c.LASTNAME_NAME), 
e.EMP_NAME 
FROM ACCOUNTS ac, 
CUSTOMER c, 
EMPLOYEE e 
WHERE ac.AGENT_CODE = e.AGENT_CODE 
OR ac.AGENT_CODE = c.AGENT_CODE 

GETTING_WRONG_RESULTS_WITH_THE_ABOVE_QUERY

+------------+--------------------+------------+--------------+--------------+ 
| AGENT_CODE | WORKING_AREA  | AGENT_TYPE | CUSTOMER_NAME| EMP_NAME  | 
+------------+--------------------+------------+--------------+--------------+ 
| A007  | Bangalore   | CUSTOMER |Walter Holmes |Walter Holmes | 
| A007  | London    | EMPLOYEE |Walter Holmes |Peter Sam  | 
| A008  | New York   | CUSTOMER |Micheal Junior|Micheal Junior| 
| A007  | Bangalore   | EMPLOYEE |Walter Holmes |John Tyler | 
| A010  | Chennai   | CUSTOMER |Micheal  |Micheal  | 
| A007  | San Jose   | EMPLOYEE |Walter Holmes |Albert  | 
+------------+--------------------+------------+--------------+--------------+ 

を与えているこのクエリ期待の検索結果を持って

+------------+--------------------+------------+--------------+ 
| AGENT_CODE | WORKING_AREA  | AGENT_TYPE | AGENT_NAME | 
+------------+--------------------+------------+--------------+ 
| A007  | Bangalore   | CUSTOMER |Walter Holmes | 
| A003  | London    | EMPLOYEE |Peter Sam  | 
| A008  | New York   | CUSTOMER |Micheal Junior| 
| A011  | Bangalore   | EMPLOYEE |John Tyler | 
| A010  | Chennai   | CUSTOMER |Micheal  | 
| A012  | San Jose   | EMPLOYEE |Albert  | 
+------------+--------------------+------------+--------------+ 

ACCOUNTS(AGENT_CODE -Pr imaryKey)

+------------+--------------------+------------+ 
| AGENT_CODE | WORKING_AREA  | AGENT_TYPE | 
+------------+--------------------+------------+ 
| A007  | Bangalore   | CUSTOMER | 
| A003  | London    | EMPLOYEE | 
| A008  | New York   | CUSTOMER | 
| A011  | Bangalore   | EMPLOYEE | 
| A010  | Chennai   | CUSTOMER | 
| A012  | San Jose   | EMPLOYEE | 
| A005  | Brisban   | EMPLOYEE | 
+------------+--------------------+------------+ 

CUSTOMER(AGENT_CODE -ForeignKey)

+-----------+-------------+-------------+------------+ 
|CUST_CODE | FIRST_NAME | LAST_NAME | AGENT_CODE | 
+-----------+-------------+-------------+------------+ 
| C00013 | Walter  | Holmes  | A007  | 
| C00001 | Micheal  | Junior  | A008  | 
| C00020 | Albert  | Skyler  | A010  | 
+-----------+-------------+-------------+------------+ 

従業員(AGENT_CODE -ForeignKey)

EMP_NAME EMP_CODE  AGENT_CODE 
---------- --------------- ---------- 
Peter Sam C00054   A003 
John Tyler C00023   A011 
White Bolt C00043   A012 
+0

これまでに何を試みましたか? – Eric

+0

@Eric - 現在のクエリを追加しました – Cmen535

+0

現在の(不正確な)結果も追加してください –

答えて

1

あなたは結果を組み合わせたい場合は、あなたがかもしれませんあなたの結果はUNIONになります。

SELECT a.AGENT_CODE, a.WORKING_AREA, a.AGENT_TYPE, c.FIRST_NAME || ' ' || c.LAST_NAME AS AGENT_NAME 
FROM ACCOUNTS a 
JOIN CUSTOMER c ON c.AGENT_CODE = a.AGENT_CODE 
UNION 
SELECT a.AGENT_CODE, a.WORKING_AREA, a.AGENT_TYPE, e.EMP_NAME 
FROM ACCOUNTS a 
JOIN CUSTOMER e ON e.AGENT_CODE = a.AGENT_CODE 
+0

ありがとうございます。その期待どおりの動作。 – Cmen535

関連する問題