Hallo,
suche die Tabelle(n), die die im Screenshot aufgezeigten Produktattribute aufzeigen. Erwarte eigentlich einen Fremdschlüssel in der Tabelle product, der auf die entsprechende Tabelle referenziert, finde aber Keinen. Weiß jemand, in welcher Tabelle folgende Attribute hinterlegt sind und wie sie referenziert werden? Das Query zu formulieren dürfte mir dann schon gelingen.
property_group und property_group_option, Verknüpfung zum Produkt product_property. Es gibt keinen Fremdschlüssel in product, da many-to-many
In der Tabelle property_group gibt es die column sorting_type und display_type, die aber beide immer nur ‚alphanumeric‘ und ‚text‘ aufweisen.
In der Tabelle property_group_option gibt es gar kein varchar
In der Tabelle property_group_option_translation gibt eine column name. Aber folgendes Query ergibt keinen vernünftigen Treffer:
SELECT * FROM `property_group_option_translation` WHERE `name` LIKE '%Werkstoff%';
Und folgendes Query liefert gar keinen Treffer:
SELECT * FROM `property_group_option_translation` WHERE `name` = 'Länge' OR name='Laenge';
Das sind vermutlich die Gruppennamen, nicht die einzelnen Werte, oder? Probier mal
SELECT * FROM `property_group_translation` WHERE `name` LIKE '%Werkstoff%';
Bingo. Folgendes Query liefert folgendes Resultat:
SELECT * FROM `property_group_translation` WHERE `name` = 'Werkstoff';
Resultat:
Mich damit jetzt zurück zu angeln zur Tabelle product wird wohl eine Sisyphusarbeit. Alles was ich vorerst habe ist der FK, der auf property_group verweist. Ich hatte es bereits im vorigen Post erwähnt: Wenn es im Netz ein ER Diagramm der Datenbank gäbe, wäre vieles verständlicher. Ob diese beiden Treffer denselben Produkt zugewiesen sind, ist vorerst jedenfalls nicht zu erkennen…Die Frage, woher Du Deine Kenntnisse der Datenbank hast, wage ich erst gar nicht zu stellen…
Probier mal
SELECT COUNT(DISTINCT pgo.property_group_id) AS counter, p.id, p.product_number, pgt.name
FROM product p
LEFT JOIN product_property pp ON p.id=pp.product_id
LEFT JOIN property_group_option pgo ON pp.property_group_option_id=pgo.id
LEFT JOIN property_group_translation pgt ON pgo.property_group_id=pgt.property_group_id
WHERE pgt.name = 'Werkstatt'
GROUP BY p.id
HAVING counter > 1;
@Anotherone:
Das passt soweit. Allerdings, wie oben erwähnt, mit Werkstoff, nicht mit Werkstatt. Vielen Dank für Deine Hilfe! Kannst Du mir bzgl. einer letzten Anfrage noch weiterhelfen? Ich veröffentliche die Anfrage wie gewohnt in Forum und zolle Dir höchsten Respekt für Deine Kenntnisse!! Werde diesen Thread heute Abend als gelöst markieren, damit Du diesen meinen letzten Post noch durchlesen kannst…
Änderte das Query wie folgt ab, da ich mit den Aliasen Probleme habe. Hoffe, du nimst mir das nicht übel, schließlich ist es Dein Werk!
SELECT COUNT(DISTINCT property_group_option.property_group_id) AS counter, product.id, product_number, property_group_translation.name
FROM product
LEFT JOIN product_property ON product.id=product_property.product_id
LEFT JOIN property_group_option ON product_property.property_group_option_id=property_group_option.id
LEFT JOIN property_group_translation ON property_group_option.property_group_id=property_group_translation.property_group_id
WHERE property_group_translation.name = 'Werkstoff'
GROUP BY product.id
HAVING counter >= 1;
Dieses Thema wurde automatisch 30 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Antworten mehr erlaubt.