Kommen wir erst einmal zu den SQL-Abfragen:
COUNT(a.id) as item_count ← Hier zählst du die Anzahl der Artikel und setzt Sie in die Variable „item_count“.
MAX(at.attr18=‚1‘) as lager1 ← Hier speicherst du den maximalen Wert in der Variable „lager1“, welcher in Attribut18 steht, wenn der Wert „1“ beträgt.
MAX(at.attr18=‚2‘) as lager2 ← Hier speicherst du den maximalen Wert in der Variable „lager2“, welcher in Attribut18 steht, wenn der Wert „2“ beträgt.
Diese Abfrage an sich würde für den im ersten Beitrag beschriebenen Fall allerdings nicht viel Sinn machen,
da du ja drei Kategorien hast und du aus diesem Grund schauen möchtest aus welcher Kategorie ein Artikel enthalten ist.
Also nutzen wir als Freitextfeld für die Artikel am besten ein Boolean, weil es ja nur 2 Fälle gibt, entweder er ist in der Kategorie also „true/1“ oder nicht „false/0“.
Boolean-Freitextfelder
Bitte beachten Sie, dass sich die Abfrage verändern kann, je nachdem welche Shopware-Version eingesetzt wird. In den aktuellen 5.2 Versionen entspricht true =„1“ und false =„0“, in älteren Versionen kann es nötig sein direkt nach =„true“ oder =„false“ abzufragen.
Also müsste deine Abfrage circa so aussehen:
MAX(at.attr1="1") as felgen, MAX(at.attr2="1") as motorraeder, MAX(at.attr3="1") as zubehoer
Nachdem du mit diesen SQL-Abfragen die benötigten Variablen ermittelt hast kannst du die nun für deine Bedigung nutzen in Form eines IF.
IF(Bedingung,Ja,Nein) -> Eine einfache Wenn-Dann-Sonst-Verzweigung, z.B. IF(d.weight>5,1,0) Wenn das Gewicht größer als 5 ist wird eine 1 zurückgegeben ansonsten eine 0.
Jetzt liegt es natürlich an dir, wie deine Bedigung aussehen soll. Ohne zu wissen, was bei welchem Fall eintreten soll, kann man hier nicht wirklich sagen wie die Bedingung bei dir aussehen muss.