我正在尝试从多个表(3 个级别)中获取数据。scanario 是客户向代理发送请求并由代理处理。对于客户,我有表客户
-----------------------------------------
customerid | customername | fk_personid
1 | abc | 1
2 | xyz | 4
------------------------------------------
客户将请求发送给将处理它的代理
----------------------------------------
agnetid | agentname | fk_personid
6 | asd | 1
7 | fgh | 4
---------------------------------------
以上两个表都通过其父表人连接
------------------------------------------
personid | personname | personemail
1 | abc | as@m.com
2 | xyz | vb@df.com
-----------------------------------------
现在有另一个表名请求,其中两个外键都是请求表的复合 PK
------------------------------------------
FK_custmid | FK_agentid | requestype
1 | 1 | type one
2 | 2 | type two
-----------------------------------------
现在最后一件事是有六种不同类型的请求通过 FK 连接到请求表(父)。下面是单一类型休息的一张表,都一样。在下表中,上述复合 PK 是 FK 的
-----------------------------------------------------------
req_id | req_FK_custmid | req_FK_agentid | requestype
1 | 1 | 1 | type one
2 | 2 | 2 | type two
----------------------------------------------------------
ahhhhhhh 现在记住所有这些表格我必须显示有关请求生成的客户的详细信息,即我需要
-------------------------------------------------
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
我尝试了很多其他方法,但每个人都没有给我想要的东西,我基本上被困在一个点上,以获得客户下的订单/请求类型。
注意:您将在查询中看到一些字段,但我没有在上面的表格中提到只是为了节省时间,我输入的所有数据都是虚拟的,可能不会相互同步。
注意:如果您建议我更改表格及其连接结构,请告诉我并指导我是否做错了。