Я действительно не уверен, как это объяснить, так как я только начал изучать, как использовать MySQL-запросы более современным способом. Вот что у меня есть:Добавить столбцы для нескольких атрибутов в MySQL
SELECT pa.displayvalue as Brand
FROM product p
JOIN categoryheader ch ON ch.templatetype = 0 AND p.categoryid=ch.categoryid AND ch.isactive=1
JOIN categorydisplayattributes cda ON ch.headerid = cda.headerid AND ch.categoryid = cda.categoryid AND cda.templatetype = ch.templatetype AND cda.isactive=1
JOIN productattribute pa ON p.productid = pa.productid AND cda.attributeid = pa.attributeid AND pa.localeid = 1 AND pa.isactive =1
JOIN attributenames an ON pa.attributeid = an.attributeid AND an.localeid = 1
WHERE p.isactive = 1 AND p.categoryid = 4871
AND an.attributeid = 113319;
Так что у меня этот запрос, и в буквальном смысле, все, что я хочу сделать, это добавить еще один столбец для «А an.attributeid = 113319»
Я просто хочу, чтобы добавить другой столбец, но вместо 113319, я хочу, чтобы он вытащил значения, скажем, 1762 в соседний столбец.
Таким образом, столбец 1 будет иметь все значения, которые «И an.attributeid = 113319» тянет, а столбец два будет иметь все значения, которые тянет «And an.attributeid = 1762».
Я получил этот код для работы вид:
SELECT pa.displayvalue as Brand
FROM product p
JOIN categoryheader ch ON ch.templatetype = 0 AND p.categoryid=ch.categoryid AND ch.isactive=1
JOIN categorydisplayattributes cda ON ch.headerid = cda.headerid AND ch.categoryid = cda.categoryid AND cda.templatetype = ch.templatetype AND cda.isactive=1
JOIN productattribute pa ON p.productid = pa.productid AND cda.attributeid = pa.attributeid AND pa.localeid = 1 AND pa.isactive =1
JOIN attributenames an ON pa.attributeid = an.attributeid AND an.localeid = 1
WHERE p.isactive = 1 AND p.categoryid = 4871
AND an.attributeid = 113319;
SELECT pa.displayvalue as Type
FROM product p
JOIN categoryheader ch ON ch.templatetype = 0 AND p.categoryid=ch.categoryid AND ch.isactive=1
JOIN categorydisplayattributes cda ON ch.headerid = cda.headerid AND ch.categoryid = cda.categoryid AND cda.templatetype = ch.templatetype AND cda.isactive=1
JOIN productattribute pa ON p.productid = pa.productid AND cda.attributeid = pa.attributeid AND pa.localeid = 1 AND pa.isactive =1
JOIN attributenames an ON pa.attributeid = an.attributeid AND an.localeid = 1
WHERE p.isactive = 1 AND p.categoryid = 4871
AND an.attributeid = 1762;
Но это возвращается в Navicat в двух отдельных результатов. Я хочу, чтобы оба они были в одном результате, но как два столбца, а не два результата с одним столбцом.
Как вы можете видеть, все строки одинаковы для каждого из них, кроме последней строки.
Я также чувствую, что есть лучший способ, чем использовать этот код всего два раза, чтобы получить еще один столбец для an.attributeid. Несмотря ни на что, я возьму то, что смогу получить.
Если у вас есть ЛЮБЫЕ предложения, я был бы очень признателен.
То, что вы просите, довольно сложно сделать, и 99.999999999% времени не очень хорошая идея.Строки должны представлять связанные фрагменты данных, а не строки на странице, на которой вы нарисовали некоторые несвязанные столбцы. Когда вы ищете такой выход, лучше всего обращаться с ним на уровне приложения. – Uueerdo
@Uueerdo полностью согласен. Я бы добавил два способа обращения с ним на уровне приложения: выполните два запроса и покажите результаты рядом друг с другом, или сделайте один промежуточный запрос, чтобы создать таблицу, содержащую оба результата, в одну таблицу, если соединения стоят дорого, а затем два запросов к этой таблице. – qoba
Так что эти цифры, которые я пытаюсь изменить, они тянут атрибуты для продукта. Так что один номер вытащит фирменное наименование для кучи продуктов, а затем другой номер потянет все типы брендов. Я думаю, что я пытаюсь сделать, это создать CSV, который будет отображать Бренд, а затем Тип. Оба связаны друг с другом. Поэтому, если бы это было превосходно, заголовки были бы: «Бренд» и «Тип», а затем каждая строка была бы заполнена маркой и типом для каждого продукта. – DarkMatter