Хорошо, я немного потерял ... не уверен, что это просто невозможно, или если я просто что-то пропустил ...Подзапрос с использованием значений из родительского запроса с запросом IN (...)?
У меня есть столбец «продукты» в «счетах», таблицу с разделенными запятыми списками идентификаторов продуктов (например, 1,2,3) и другую таблицу под названием «продукты», чьи SKU, которые я пытаюсь получить в одном запросе, и также доступны в виде списка с разделителями-запятыми , поэтому, если в исходном столбце «товары» содержится «1,2,3» в качестве записи, я хочу иметь еще один столбец «skus» в результатах, имеющих такие записи, как «DD093, RT883, KR933» (образцы образцов, соответствующие этому продукту идентификаторы).
Вот что у меня есть, что работает просто отлично (передавая конкретный список идентификаторов продукта):
SELECT i.*, (SELECT GROUP_CONCAT(sku) FROM products p WHERE p.id IN (1,2,3)) AS skus
FROM invoices i
WHERE 1
ORDER BY i.id DESC
и возвращает что-то вроде этого:
id | products | skus
1 | 1,2,3 | DD093,RT883,KR933
Но если я прохожу что-то вроде это:
SELECT i.*, (SELECT GROUP_CONCAT(sku) FROM products p WHERE p.id IN (i.products)) AS skus
FROM invoices i
WHERE 1
ORDER BY i.id DESC
разрывы запросов ...
так, как получить значения из i.products в подобном подзапросе?
И это возможно?
P.S. - Прежде чем вы даже предположите, что я нормализую данные или сужу о том, что я использую такую ужасную настройку, имейте в виду, что это сделано специально, потому что создание отдельных записей для таблицы «счет-фактура» для каждого продукта будет усложнять гораздо больше вещей на front-end, и я не хочу, и мне не нужно туда ехать. Это всего лишь журнал сортов и сделает внешний интерфейс более привлекательным для этого одного столбца, и именно поэтому я пытаюсь сделать это в рамках одного запроса и спрашиваю, возможно ли это - если да, то каким образом? Если нет, я бы тоже хотел ответить на этот вопрос.
Почему даже беспокоиться, пока вы нормализуете ужасный механизм сохранения данных с разделенным запятой skus? – Drew
Это не вариант, и мне не нужно это делать для того, что мне нужно для выполнения здесь - это просто для журнала, но не более того. Я знаю, что я мог бы нормализовать все это, но тогда простая задача становится намного больше, чем я хочу, чтобы она была или нужна. И я не хочу запускать дополнительные запросы mysql для каждого набора результатов, чтобы получить соответствующие SKU - я пытаюсь сделать все это в рамках одного запроса mysql. –
мы делаем наши кровати и должны спать в них – Drew