В настоящее время у меня около 1000 продуктов в таблице MySQL, каждая из которых, по-видимому, дублируется (1 с продуктом SKU и один с продуктом MPN или номером продукта производителя), как показано ниже:Разделенные столбцы в mySQL
+--------------+------------+----------------+-----------------+------------------------+
| V_Article_ID | Article_ID | V_Article_Code | Brand_Domain_ID | Prefered_V_Article_ID |
+--------------+------------+----------------+-----------------+------------------------+
| 11003 | 7043 | AA4011 | null | 11002 |
| 11002 | 7043 | U-30G-BK | 101036 | null |
+--------------+------------+----------------+-----------------+------------------------+
в идеале, что я хотел бы, чтобы объединить две строки в одну строку для каждого продукта (как вы можете увидеть article_id одинакова для обоих рядов), держать Brand_Domain_ID, которое NOT NULL и разделить два отдельных Vendor_Article_Code - в две отдельные колонки; SKU (AA4011) и MPN (U-30G-BK), поэтому вывод будет выглядеть примерно так:
+------------+--------+----------+-----------------+
| Article_ID | SKU | MPN | Brand_Domain_ID |
+------------+--------+----------+-----------------+
| 7043 | AA4011 | U-30G-BK | 101036 |
+------------+--------+----------+-----------------+
Я в настоящее время используется следующее заявление для достижения того, что я хочу (если только для одного продукта на основе на article_id):
SELECT article_id,
case WHEN v_article_code REGEXP '^AA' THEN v_article_code END as SKU,
case WHEN v_article_code NOT REGEXP '^AA' THEN v_article_code END as MPN,
Brand_Domain_ID
FROM vendor_article
WHERE article_id = 7043
+------------+--------+----------+-----------------+
| Article_ID | SKU | MPN | Brand_Domain_ID |
+------------+--------+----------+-----------------+
| 7043 | null | U-30G-BK | null |
+------------+--------+----------+-----------------+
| 7043 | AA4011 | null | 101036 |
+------------+--------+----------+-----------------+
Мой вопрос заключается в следующем: есть ли способ, чтобы сократить это вниз, так что оба строк стали одной строкой, без нулевых элементов и того же article_id? Кроме того, есть ли быстрый способ, с помощью которого можно проходить через каждый из Article_ID, например, цикл for в PHP? Я знаю, как вставлять вывод в новую таблицу, я просто не уверен, как лучше подойти к решению.
Любая помощь была бы очень признательна.
Привет, спасибо за ваш ответ, я пошел с этим решением в конце. Мне было интересно, как выбрать столбец из другой таблицы (имя таблицы «vendor_article_channel.CHANNEL SKU»), где vendor_article_channel.VENDOR_ARTICLE_ID равно vendor_article.VENDOR_ARTICLE_ID. Я попытался добавить это к операторам select/from, но он продолжает говорить, что a.article_id больше не существует? Я читал все это сегодня, и я просто наклоняю голову вокруг него? Еще раз спасибо за ваш ответ! –
@SteveVincent, может быть, вы хотите 'a.v_article_id = c.vendor_article_id', поскольку в вашей статье нет' vendor_article_id' в таблице 'vendor_article'? – Fabricator
жаль, что я сократил vendor_article_id до v_articled_id, чтобы он соответствовал таблице, в DB его vendor_article_id –