有一个请求表,每个请求都需要两个担保人。因此,我为请求详细信息制作了一个表格,并为保证人详细信息制作了另一个表格。
现在我需要一个包含所有请求和所有保证人姓名的视图,如下所述。
有谁可以帮我解决这个问题..
我需要MySQL代码来创建此输出。 (用于创建PHP页面)
这些是我的表格。
table tblReq
|-------------------------------------------|
| ReqID | ReqAmount | ReqDate |
|-------------------------------------------|
| 1001 | 25000 | 2017-10-21 |
| 1002 | 21000 | 2017-10-10 |
| 1003 | 28000 | 2017-10-15 |
| 1004 | 20000 | 2017-10-22 |
|-------------------------------------------|
table tblGuarantors
|------------------------------------------|
| G_ID | ReqID | G_Name | G_Contact |
|------------------------------------------|
| 10001 | 1001 | Ramu | 123456 |
| 10002 | 1001 | Deepu | 123456 |
| 10003 | 1002 | Mary | 123456 |
| 10004 | 1002 | James | 123456 |
| 10005 | 1003 | Muhad | 123456 |
| 10006 | 1003 | Mannu | 123456 |
|------------------------------------------|
|------------------------------------------|
| ReqID | ReqAmount | G1_Name | G2_Name |
|------------------------------------------|
| 1001 | 25000 | Ramu | Deepu |
| 1002 | 21000 | Mary | James |
| 1003 | 28000 | Muhad | Mannu |
| 1004 | 20000 | Null | Null |
|------------------------------------------|
你能帮助我吗?
我尝试过这个SQL,但它没有像我想的那样工作。
SELECT
r.ReqID,
r.ReqAmount,
g1.G_Name,
g2.G_Name
from
(tblReq as r LEFT JOIN tblGuarantors as G1 on g1.ReqID = r.ReqID)
LEFT JOIN tblGuarantors as G2 on g2.ReqID = r.ReqID
我们将不胜感激。
提前致谢....
答案 0 :(得分:1)
您可以使用以下查询:
SELECT r.ReqID, r.ReqAmount,
MIN(G_Name) AS G1_Name,
MAX(G_Name) AS G2_Name
FROM tblReq AS r
LEFT JOIN tblGuarantors AS g ON r.ReqID = g.ReqID
GROUP BY r.ReqID, r.ReqAmount
如果请求记录只与一个担保人记录相关,则必须修改查询。
修改强>
要从保证人表中获取所有字段,您需要使用其他查询:
SELECT r.ReqID, r.ReqAmount,
g1.G_ID AS G1_ID, g1.G_Name AS G1_Name,
g2.G_ID AS G2_ID, g2.G_Name AS G2_Name
FROM tblReq AS r
LEFT JOIN tblGuarantors AS g1
ON r.ReqID = g1.ReqID
LEFT JOIN tblGuarantors AS g2
ON r.ReqID = g2.ReqID
WHERE (g1.G_ID < g2.G_ID) OR (g1.G_ID IS NULL)
第一个LEFT JOIN
获取具有最小G_ID
值的担保人的详细信息,而第二个LEFT_JOIN
获取另一个担保人的详细信息。你还需要谓词
g1.G_ID IS NULL
以便返回没有担保人的请求记录。
答案 1 :(得分:0)
我在notepade中编写了代码,也许你应该编辑它,但我认为它会有效。抱歉我的英文。
{{1}}
答案 2 :(得分:0)
Try this
select tblReq.ReqID, tblReq.ReqAmount, MIN(tblGuarantors.G_Name) AS G1_Name,
MAX(tblGuarantors.G_Name) AS G2_Name
from tblGuarantors
left join tblReq on tblReq.ReqID=tblGuarantors.ReqID;