Ich bin mir nicht sicher, wie ich das erklären soll, da ich gerade angefangen habe zu lernen, wie MySQL-Abfragen heute auf eine fortschrittlichere Art und Weise verwendet werden. Hier ist, was ich habe:Hinzufügen von Spalten für mehrere Attribute in 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;
So habe ich die Abfrage, und buchstäblich alles, was ich tun möchte, ist eine weitere Spalte für das Hinzufügen „und an.attributeid = 113319“
Ich möchte nur hinzufügen eine andere Spalte, aber anstelle von 113319 möchte ich, dass sie die Werte von sagen wir 1762 in eine Spalte daneben zieht.
Also würde Spalte 1 alle Werte haben, die "Und an.attributeid = 113319" zieht, und Spalte zwei würde alle Werte haben, die "Und an.attributeid = 1762" zieht.
Ich habe diese Art von Code zu arbeiten:
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;
Aber das ist in navicat als zwei getrennte Treffer. Ich möchte, dass beide in einem Ergebnis sind, aber als zwei Spalten statt zwei Ergebnisse mit jeweils einer Spalte.
Wie Sie sehen können, sind alle Zeilen in jedem dieser Selects mit Ausnahme der letzten Zeile identisch.
Ich habe auch das Gefühl, dass es einen besseren Weg gibt, als den ganzen Code zweimal zu verwenden, nur um eine andere Spalte für ein Attributeid zu bekommen. Egal, ich werde nehmen, was ich bekommen kann.
Wenn Sie irgendwelche Vorschläge haben, würde ich es sehr sehr zu schätzen wissen.
Was Sie fragen, ist etwas kompliziert zu tun, und 99.999999999% der Zeit keine gute Idee.Zeilen sollen verknüpfte Datenelemente darstellen, nicht die Zeilen auf einer Seite, auf die Sie einige nicht verwandte Spalten gezeichnet haben. Wenn Sie nach dieser Art von Ausgabe suchen, ist es am besten, sie auf der Anwendungsebene zu behandeln. – Uueerdo
@Uueerdo stimme völlig zu. Ich würde zwei Möglichkeiten hinzufügen, um es auf Anwendungsebene zu behandeln: zwei Abfragen ausführen und die Ergebnisse nebeneinander anzeigen oder eine Zwischenabfrage ausführen, um eine Tabelle zu erstellen, die beide Ergebnisse in einer einzigen Tabelle enthält, wenn die Joins teuer sind, und dann zwei Abfragen gegen diese Tabelle. – qoba
Also diese Zahlen, die ich versuche zu ändern, ziehen Attribute für ein Produkt. So dass eine Nummer den Markennamen für eine Reihe von Produkten zieht, und dann wird diese andere Nummer alle Markentypen ziehen. Ich versuche, eine CSV-Datei zu erstellen, die die Marke und dann den Typ auflistet. Beide sind miteinander verwandt. Wenn dies also ausgezeichnet wäre, wären die Kopfzeilen: "Marke" und "Typ" und dann würde jede Zeile mit der Marke und dem Typ für jedes Produkt gefüllt werden. – DarkMatter