|
Доработка запроса MSQL
|
|||
---|---|---|---|
#18+
Добрый день, просьба помочь доработать запрос выборки данных для выгрузки в ексель: Тело запроса рабочее, но не могу дописать выборку одного атрибута поскольку он лежит через отдельный запрос: Сам запрос: SELECT G.GoodId AS 'GoodId', G.Barcode AS 'GTIN', G.Name AS 'Наименование товара', GROUP_CONCAT(DISTINCT A2478.Value ORDER BY 1 SEPARATOR ';') AS 'Наименование товара', GROUP_CONCAT(DISTINCT CONCAT(A13914.Type, ': ', A13914.Value) ORDER BY 1 SEPARATOR ';') AS 'МодельАртикул', GROUP_CONCAT(DISTINCT A13905.Value ORDER BY 1 SEPARATOR ';') AS 'Вид обуви', GROUP_CONCAT(DISTINCT A15799.Value ORDER BY 1 SEPARATOR ';') AS 'Цвет', GROUP_CONCAT(DISTINCT A13886.Value ORDER BY 1 SEPARATOR ';') AS 'Размер в штихмассовой системе', GROUP_CONCAT(DISTINCT A13939.Value ORDER BY 1 SEPARATOR ';') AS 'Материал верха', GROUP_CONCAT(DISTINCT A13942.Value ORDER BY 1 SEPARATOR ';') AS 'Материал подкладки', GROUP_CONCAT(DISTINCT A13948.Value ORDER BY 1 SEPARATOR ';') AS 'Материал подошвы' СЮДА ??????? FROM Lst_Cat r JOIN Lst_Cat c ON c.left BETWEEN r.left AND r.right AND r.CatId IN (298870) JOIN Lst_GoodsToCat gtc ON gtc.CatId = c.CatId AND c.Deleted = 0 JOIN Lst_Goods G ON G.GoodId = gtc.GoodId AND gtc.Deleted = 0 LEFT JOIN Lst_AttrValues A2478 ON A2478.GoodId = G.GoodId AND A2478.AttrId = 2478 AND A2478.Deleted = 0 LEFT JOIN Lst_AttrValues A13914 ON A13914.GoodId = G.GoodId AND A13914.AttrId = 13914 AND A13914.Deleted = 0 LEFT JOIN Lst_AttrValues A13905 ON A13905.GoodId = G.GoodId AND A13905.AttrId = 13905 AND A13905.Deleted = 0 LEFT JOIN Lst_AttrValues A15799 ON A15799.GoodId = G.GoodId AND A15799.AttrId = 15799 AND A15799.Deleted = 0 LEFT JOIN Lst_AttrValues A13886 ON A13886.GoodId = G.GoodId AND A13886.AttrId = 13886 AND A13886.Deleted = 0 LEFT JOIN Lst_AttrValues A13939 ON A13939.GoodId = G.GoodId AND A13939.AttrId = 13939 AND A13939.Deleted = 0 LEFT JOIN Lst_AttrValues A13942 ON A13942.GoodId = G.GoodId AND A13942.AttrId = 13942 AND A13942.Deleted = 0 LEFT JOIN Lst_AttrValues A13948 ON A13948.GoodId = G.GoodId AND A13948.AttrId = 13948 AND A13948.Deleted = 0 СЮДА ??????? WHERE G.Status = 'published' AND G.IsTechGTIN = 0 GROUP BY 1, 2, 3 ////////////////////// Необходимо дописать получение одного атрибута ТНВЭД: В таблице Lst_GoodsToCat хранится 3 записи для каждого товара, где выглядит (приложен скрин) то есть для каждого товара есть 3 записи всегда, где одна это id категории ТНВЭД. В случае с товаром на скрине ТНВЭД значение ищем по catid для обуви между 308353 AND 321853 подходит только одно значение 316774 и вот по нему нужно дернуть таблицу Lst_Cat, чтобы получить значение ТНВЭД, которое берем из столбца PartyCatId. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2021, 23:28 |
|
Доработка запроса MSQL
|
|||
---|---|---|---|
#18+
Доработка запросов, особенно с добавлением таблиц в источник данных - весьма неблагодарное занятие. Гораздо разумнее создать заново. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 07:21 |
|
Доработка запроса MSQL
|
|||
---|---|---|---|
#18+
Akina, добрый день, таблицы приведены в качестве информации где хранится атрибут который нужно выдернуть как остальные в запросе. Товар каждый имеет набор атрибутов привязанный к классификатору в системе и естественно значения этих атрибутов заведенные пользователем. Запросом я нахожу в дереве классификатора нужный мне диапазон id для конкретной товарной группы, после этого дергаю id конкретных атрибутов этой товарной группы. Результат : нажимаю выгрузить ексель отчет и php выгружает мне отчет в ексель где таблица со всеми атрибутами и всеми товарами удовлетворяющих условиям запроса. Остается чтобы в ексель попал последний столбец ТНВЭД и значение его для каждого товара, которые уже выгружаются. Если остальные атрибуты в одной таблице хранятся и они уже выдернуты со своими значениями. и как писал запрос рабочий. То моя просьба была, как сфомировать строку запроса значения атрибута ТНВЭД в этот же запрос и даже пометил места красным куда добавлять необходимо строку запроса значения атрибута ТНВЭД для товара. Таблица это скрин из базы где лежит таблица посредник участвующая в запросе. В этой таблице для каждого товара лежит 3 значения catid и только одно из них это catid для ТНВЭД и нам нужно в запросе использовать сверку 3-х значкений catid для каждого товара чтобы попал в нужный диапазон этот номер catid. Узнав из этой таблицы catid нужно с ним обратится в таблицу следующую где хранится связка этого catid с реальным номером кода ТНВЭД и вот его добавить к выводу в отчете в качестве еще одного столбца. Я пока не знаю синтаксиса запросов и поэтому пытаюсь учиться на ходу поскольку хочу сделать рабочий запрос полностью со всеми атрибутами. Мои размышления про добавления ниже: SELECT G.GoodId AS 'GoodId', G.Barcode AS 'GTIN', GROUP_CONCAT(DISTINCT A2478.Value ORDER BY 1 SEPARATOR ';') AS 'Наименование товара', GROUP_CONCAT(DISTINCT CONCAT(A13914.Type, ': ', A13914.Value) ORDER BY 1 SEPARATOR ';') AS 'МодельАртикул', GROUP_CONCAT(DISTINCT A13905.Value ORDER BY 1 SEPARATOR ';') AS 'Вид обуви', GROUP_CONCAT(DISTINCT A15799.Value ORDER BY 1 SEPARATOR ';') AS 'Цвет', GROUP_CONCAT(DISTINCT A13886.Value ORDER BY 1 SEPARATOR ';') AS 'Размер в штихмассовой системе', GROUP_CONCAT(DISTINCT A13939.Value ORDER BY 1 SEPARATOR ';') AS 'Материал верха', GROUP_CONCAT(DISTINCT A13942.Value ORDER BY 1 SEPARATOR ';') AS 'Материал подкладки', GROUP_CONCAT(DISTINCT A13948.Value ORDER BY 1 SEPARATOR ';') AS 'Материал подошвы', "PartyCatId" AS 'ТНВЭД' FROM Lst_Cat r JOIN Lst_Cat c ON c.left BETWEEN r.left AND r.right AND r.CatId IN (298870) JOIN Lst_GoodsToCat gtc ON gtc.CatId = c.CatId AND c.Deleted = 0 JOIN Lst_Goods G ON G.GoodId = gtc.GoodId AND gtc.Deleted = 0 LEFT JOIN Lst_AttrValues A2478 ON A2478.GoodId = G.GoodId AND A2478.AttrId = 2478 AND A2478.Deleted = 0 LEFT JOIN Lst_AttrValues A13914 ON A13914.GoodId = G.GoodId AND A13914.AttrId = 13914 AND A13914.Deleted = 0 LEFT JOIN Lst_AttrValues A13905 ON A13905.GoodId = G.GoodId AND A13905.AttrId = 13905 AND A13905.Deleted = 0 LEFT JOIN Lst_AttrValues A15799 ON A15799.GoodId = G.GoodId AND A15799.AttrId = 15799 AND A15799.Deleted = 0 LEFT JOIN Lst_AttrValues A13886 ON A13886.GoodId = G.GoodId AND A13886.AttrId = 13886 AND A13886.Deleted = 0 LEFT JOIN Lst_AttrValues A13939 ON A13939.GoodId = G.GoodId AND A13939.AttrId = 13939 AND A13939.Deleted = 0 LEFT JOIN Lst_AttrValues A13942 ON A13942.GoodId = G.GoodId AND A13942.AttrId = 13942 AND A13942.Deleted = 0 LEFT JOIN Lst_AttrValues A13948 ON A13948.GoodId = G.GoodId AND A13948.AttrId = 13948 AND A13948.Deleted = 0 LEFT JOIN Lst_GoodsToCat CatId ON CatId.GoodId = G.GoodId AND CatId.GoodId BETWEEN 308353 AND 321853 LEFT JOIN Lst_Cat PartyCatId ON PartyCatId.CatId=CatId.GoodId WHERE G.Status = 'published' AND G.IsTechGTIN = 0 GROUP BY 1, 2 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 09:58 |
|
Доработка запроса MSQL
|
|||
---|---|---|---|
#18+
Маркec Код: sql 1. 2. 3. 4.
Интересный состав предикатов. Он вообще имеет какой-то смысл? Я про последние условия в ON. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2021, 06:14 |
|
|
start [/forum/topic.php?fid=47&fpage=4&tid=1827894]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
49ms |
get topic data: |
16ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 236ms |
total: | 382ms |
0 / 0 |