複数のテーブル (3 レベル) からデータを取得しようとしています。スキャンナリオは、顧客がエージェントにリクエストを送信し、エージェントがそれを処理することです。顧客の場合、顧客のテーブルがあります
-----------------------------------------
customerid | customername | fk_personid
1 | abc | 1
2 | xyz | 4
------------------------------------------
顧客は、それを処理するエージェントにリクエストを送信します
----------------------------------------
agnetid | agentname | fk_personid
6 | asd | 1
7 | fgh | 4
---------------------------------------
上記の両方のテーブルは、親テーブル person を介して接続されています
------------------------------------------
personid | personname | personemail
1 | abc | as@m.com
2 | xyz | vb@df.com
-----------------------------------------
現在、両方の外部キーが要求テーブルの複合 PK である Request のような別のテーブル名があります
------------------------------------------
FK_custmid | FK_agentid | requestype
1 | 1 | type one
2 | 2 | type two
-----------------------------------------
最後に、FK を介してリクエスト テーブル (親) に接続されている 6 つの異なるタイプのリクエストがあります。以下は、シングルタイプの残りの1つの表です。残りはすべて同じです。以下の表では、上記の複合 PK は FK です。
-----------------------------------------------------------
req_id | req_FK_custmid | req_FK_agentid | requestype
1 | 1 | 1 | type one
2 | 2 | 2 | type two
----------------------------------------------------------
ああ、これらすべてのテーブルを念頭に置いて、リクエストによって生成された顧客に関する詳細を表示する必要があります。
-------------------------------------------------
req_id | requestype | customer_id | agent_id
1 | type one | 1 | 1
-------------------------------------------------
皆さんが私の主張を理解し、解決策を見つけるのを手伝ってくれることを願っています。私も自分のように試してみました
SELECT * FROM Agent,Request,Person,customer where Request.customer_idcutomer = customer.idcustomer and Request.Agent_idAgent = Agent.idAgent and Person.idPerson = customer.Person_idPerson and Person.idPerson = Agent.Person_idPerson
別のアプローチは、これをさらに完了する方法がわからなかったため、不完全です。クエリの最後の部分の1はハードコードされているはずですが、getがどのように動的かわかりません
SELECT request.SPOC_id, request.order_created, request.order_updated
FROM request
WHERE Agent_idAgent = (
SELECT agent.idAgent
FROM agent
WHERE agent.idAgent =1 )
LIMIT 0 , 30
私が試した他のアプローチはたくさんありますが、どれも私が望むものを与えてくれませんでした。
注:クエリに表示されるフィールドがいくつかありますが、時間を節約するために上記の表には記載していません。入力したデータはすべてダミーであり、互いに同期されていない可能性があります。
注:テーブルとその接続構造を変更するよう提案された場合は、私に知らせて、間違っているかどうかを教えてください。