Значение GROUP_CONTACT использовать в качестве условия с другим столбцом - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть один случай, когда я хочу использовать значение group_contact в качестве условия с другим столбцом.

пожалуйста, посмотрите следующий код, который я применил, но верните ссылку на групповую функцию.

Возьмите один пример следующим образом.

SELECT 
    GROUP_CONCAT(id) AS loca_id,
    (SELECT 
            SUM(loc.total_qty)
        FROM
            locations_assign AS loc
        WHERE
            id IN (loca_id)) AS pend_qty
FROM
    locations_assign
WHERE
    putaway_type = 3

Есть ли способ, которым я могу достичь этого?

Пожалуйста, помогите мне за то же самое.

Ответы [ 3 ]

0 голосов
/ 06 апреля 2020

GROUP_CONCAT() возвращает разделенный запятыми список идентификаторов, который является строкой и не может использоваться с оператором IN. Вместо этого используйте FIND_IN_SET():

SELECT 
  t.loca_id,
  SUM(loc.total_qty) AS pend_qty
FROM locations_assign AS loc
CROSS JOIN (
  SELECT GROUP_CONCAT(id) AS loca_id
  FROM locations_assign
  WHERE putaway_type = 3
) t
WHERE FIND_IN_SET(loc.id, t.loca_id)
0 голосов
/ 06 апреля 2020

IN не работает со строками, разделенными запятыми, но со списком отдельных значений. Поскольку список - это просто идентификаторы, которые вы выбираете в любом случае, похоже, вам нужна только общая агрегация: список идентификаторов и сумма количества:

SELECT 
  GROUP_CONCAT(id) AS loca_id,
  SUM(total_qty) AS pend_qty
FROM locations_assign
WHERE putaway_type = 3;
0 голосов
/ 06 апреля 2020

Для предложения IN вам не требуется GROUP_CONCAT, для которого достаточно SELECT

SELECT 
    GROUP_CONCAT(id) AS loca_id,
    (SELECT 
            SUM(loc.total_qty)
        FROM
            locations_assign AS loc
        WHERE
            id IN (SELECT 
                    id
                FROM
                    locations_assign
                WHERE
                    putaway_type = 3)) AS pend_qty
FROM
    locations_assign
WHERE
    putaway_type = 3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...