在单独的行上列出重复的结果?
List duplicate results on individual rows?
我有一个从数据库中提取以下信息的查询:
现在,如您所见,我已将 GROUP_CONCAT 添加到查询中,并在 GROUP_CONCAT 列中按 SubmissionId 455,有2个值
想要的结果
我想要实现的是 单独列出每个值,其中具有相同的 SubmissionID
或相同的 FieldValue
或相同的 SubmissionValueId
table 应该是这样的:
SubmissionValueId --- FieldName --- FieldValue --- SubmissionId --- FormId --- GROUP_CONCAT
52133 portofloading1 King Abdullah Port 399 28 King Abdullah Port
64318 portofloading1 Jeddah Seaport 419 28 Jeddah Seaport
74723 portofloading1 King Abdullah Port 439 28 King Abdullah Port
79269 portofloading1 Jeddah Seaport 444 28 Jeddah Seaport
87144 *** portofloading1 Jeddah Seaport 455 28 Jeddah Seaport
87144 *** portofloading1 Jeddah Seaport 455 28 Jeddah Seaport
87663 portofloading1 King Abdullah Port 456 28 King Abdullah Port
105786 portofloading1 King Abdullah Port 501 28 King Abdullah Port
109419 portofloading1 King Abdullah Port 508 28 King Abdullah Port
120521 portofloading1 King Abdullah Port 528 28 King Abdullah Port
129869 portofloading1 Jeddah Seaport 548 28 Jeddah Seaport
在 table 中我用 *** 标记的行基本上是我需要做的。我需要单独列出每一行,即使它是重复的(我不知道这是否可能)
这是检索值(图像数据)的代码:
SELECT a.SubmissionValueId, a.FieldName, a.FieldValue, a.SubmissionId, a.FormId, GROUP_CONCAT(a.FieldValue)
FROM jos_rsform_submission_values a
INNER JOIN
(SELECT SubmissionId, FieldName
FROM jos_rsform_submission_values b
WHERE FieldName IN ('Status1', 'Status2', 'Status3', 'Status4', 'Status5')
AND FieldValue = 'Pending'
AND FormId = 28
) AS test
ON a.SubmissionId = test.SubmissionId
WHERE a.FieldName = 'portofloading1' AND a.FormId = 28
GROUP BY SubmissionId
我需要单独列出每一个的原因是我需要为 `Status` = 'Pending'
所在的每个字段检索 portofloading
值。因此,如果 `Status1` = 'Pending'
,它将列出 portofloading1
,其中 Status1
&& portofloading
的 SubmissionId
是相等的。
问题是有时您可以 `Status1` = 'Pending'
; `Status2` = 'Pending'
; `Status3` = 'Pending'
;都是为了同一个 SubmissionId
。
Status5
之前的所有 Status%
个字段是 "linked" 到 portofloading1
。所以这意味着如果 Status1 - Status3
都是 'Pending' 对于 SubmissionId
;查询应该单独列出每一行,即使所有三个字段都具有相同的 portofloading1
、相同的 SubmissionValueId
和相同的 SubmissionId
; 如果您使用上述查询检索数据并在 SubmissionId
上使用 INNER JOIN 函数。
老实说,我不知道如何更好地表达我的需求。我希望它有意义。
我试图更彻底地解释这个问题,并提供了数据库的快照 运行 这个查询希望能让它更清楚。
您可以尝试以下 - 删除 group_concat() and group by
子句
SELECT a.SubmissionValueId, a.FieldName, a.FieldValue, a.SubmissionId, a.FormId, a.FieldValue
FROM jos_rsform_submission_values a
INNER JOIN
(SELECT SubmissionId, FieldName
FROM jos_rsform_submission_values b
WHERE FieldName IN ('Status1', 'Status2', 'Status3', 'Status4', 'Status5')
AND FieldValue = 'Pending'
AND FormId = 28
) AS test
ON a.SubmissionId = test.SubmissionId
WHERE a.FieldName = 'portofloading1' AND a.FormId = 28
我有一个从数据库中提取以下信息的查询:
现在,如您所见,我已将 GROUP_CONCAT 添加到查询中,并在 GROUP_CONCAT 列中按 SubmissionId 455,有2个值
想要的结果
我想要实现的是 单独列出每个值,其中具有相同的 SubmissionID
或相同的 FieldValue
或相同的 SubmissionValueId
table 应该是这样的:
SubmissionValueId --- FieldName --- FieldValue --- SubmissionId --- FormId --- GROUP_CONCAT
52133 portofloading1 King Abdullah Port 399 28 King Abdullah Port
64318 portofloading1 Jeddah Seaport 419 28 Jeddah Seaport
74723 portofloading1 King Abdullah Port 439 28 King Abdullah Port
79269 portofloading1 Jeddah Seaport 444 28 Jeddah Seaport
87144 *** portofloading1 Jeddah Seaport 455 28 Jeddah Seaport
87144 *** portofloading1 Jeddah Seaport 455 28 Jeddah Seaport
87663 portofloading1 King Abdullah Port 456 28 King Abdullah Port
105786 portofloading1 King Abdullah Port 501 28 King Abdullah Port
109419 portofloading1 King Abdullah Port 508 28 King Abdullah Port
120521 portofloading1 King Abdullah Port 528 28 King Abdullah Port
129869 portofloading1 Jeddah Seaport 548 28 Jeddah Seaport
在 table 中我用 *** 标记的行基本上是我需要做的。我需要单独列出每一行,即使它是重复的(我不知道这是否可能)
这是检索值(图像数据)的代码:
SELECT a.SubmissionValueId, a.FieldName, a.FieldValue, a.SubmissionId, a.FormId, GROUP_CONCAT(a.FieldValue)
FROM jos_rsform_submission_values a
INNER JOIN
(SELECT SubmissionId, FieldName
FROM jos_rsform_submission_values b
WHERE FieldName IN ('Status1', 'Status2', 'Status3', 'Status4', 'Status5')
AND FieldValue = 'Pending'
AND FormId = 28
) AS test
ON a.SubmissionId = test.SubmissionId
WHERE a.FieldName = 'portofloading1' AND a.FormId = 28
GROUP BY SubmissionId
我需要单独列出每一个的原因是我需要为 `Status` = 'Pending'
所在的每个字段检索 portofloading
值。因此,如果 `Status1` = 'Pending'
,它将列出 portofloading1
,其中 Status1
&& portofloading
的 SubmissionId
是相等的。
问题是有时您可以 `Status1` = 'Pending'
; `Status2` = 'Pending'
; `Status3` = 'Pending'
;都是为了同一个 SubmissionId
。
Status5
之前的所有 Status%
个字段是 "linked" 到 portofloading1
。所以这意味着如果 Status1 - Status3
都是 'Pending' 对于 SubmissionId
;查询应该单独列出每一行,即使所有三个字段都具有相同的 portofloading1
、相同的 SubmissionValueId
和相同的 SubmissionId
; 如果您使用上述查询检索数据并在 SubmissionId
上使用 INNER JOIN 函数。
老实说,我不知道如何更好地表达我的需求。我希望它有意义。
我试图更彻底地解释这个问题,并提供了数据库的快照 运行 这个查询希望能让它更清楚。
您可以尝试以下 - 删除 group_concat() and group by
子句
SELECT a.SubmissionValueId, a.FieldName, a.FieldValue, a.SubmissionId, a.FormId, a.FieldValue
FROM jos_rsform_submission_values a
INNER JOIN
(SELECT SubmissionId, FieldName
FROM jos_rsform_submission_values b
WHERE FieldName IN ('Status1', 'Status2', 'Status3', 'Status4', 'Status5')
AND FieldValue = 'Pending'
AND FormId = 28
) AS test
ON a.SubmissionId = test.SubmissionId
WHERE a.FieldName = 'portofloading1' AND a.FormId = 28