У меня есть запрос, который извлекает из базы данных следующую информацию:
Теперь, как вы можете видеть, я добавил GROUP_CONCAT кзапрос, а в столбце GROUP_CONCAT с помощью SubmissionId 455 имеется 2 значения.
ПОЛУЧЕННЫЙ РЕЗУЛЬТАТ
ЧтоЯ пытаюсь добиться, чтобы перечислил каждое значение по отдельности, ГДЕ оно имеет ТО ЖЕ SubmissionID
или ЖЕ FieldValue
или ЖЕ SubmissionValueId
Таблица должна выглядеть следующим образом:
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
В таблице, где я пометил строки с помощью ***, в основном то, что мне нужно сделать.Мне нужно перечислить каждую строку по отдельности, даже если это дубликат (я не знаю, возможно ли это)
Вот код для получения значений (данных изображения):
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
Причина, по которой мне нужно перечислить каждое из них по отдельности, заключается в том, что мне нужно извлечь значение portofloading
для каждого поля, где `Status` = 'Pending'
.Таким образом, если `Status1` = 'Pending'
, он перечислит portofloading1
, где SubmissionId
из Status1
&& portofloading
равны.
Проблема в том, что иногда вы можете иметь `Status1` = 'Pending'
;`Status2` = 'Pending'
;`Status3` = 'Pending'
;все для ЖЕ SubmissionId
.
Все Status%
поля до Status5
"связаны" с portofloading1
.Таким образом, это означает, что если Status1 - Status3
все 'Ожидание' для SubmissionId
;запрос должен перечислять каждую строку по отдельности, , даже если все три поля имеют одинаковые portofloading1
, одинаковые SubmissionValueId
и одинаковые SubmissionId
; ЕСЛИ вы используете вышеуказанный запрос для извлечения данных и используете функцию INNER JOIN для SubmissionId
.
Я, честно говоря, не знаю, как лучше выразить словами то, что мне нужно.Я надеюсь, что это имело смысл.
Я пытаюсь более подробно объяснить проблему и предоставил снимок базы данных, выполняющей этот запрос, чтобы, надеюсь, сделать ее более понятной.