Export von Artikeldaten Auswahl über bestimmte Kategorie: Wie kann man da per SQL die zugehörige canonical URL herausfinden?

Hallo,
ich stehe vor der Aufgabe, einen Export von Daten aus der Datenbank zu machen. Das klappt per Cronjob so weit vom Prinzip her gut, aber:

Auswahlkriterium: Die Artikel stehen in einer versteckten Kategorie. Das klappt anhand der passenden oxobject2category.OXCATNID so lala, aber der Wert ist hart kodiert und mir fehlen noch die Variantenartikel.

Frage 1: Wie bekomme ich die Variantenartikel mit dazu?
Frage 2: Wie könnte ich die Hartkodierung der OXCATNID umgehen?

Mein Hauptproblem ist aber, wie komme ich beim ausgewählten Artikel zur canonical URL, um diese als eine der Ergebnisspalten auszugeben? Die meisten Artikel sind in mehreren Kategorien enthalten und haben auch noch einen Hersteller und sind in der o.g.versteckten Kategorie, haben also auch mal 5 Einträge (SEO-URLs) in oxseo.
Die Suche hat mir zwar geholfen, die richtige Lösung habe ich aber noch nicht(*).

Frage 3: Welche Kriterien führen zur canonial URL?

Hier die Abfrage:

SELECT av.OXARTNUM AS sku, av.OXTITLE AS name, av.OXSHORTDESC AS short_description,
x.OXLONGDESC AS description,
av.OXPRICE AS price, NULL AS special_price,
NULL AS special_from_date,
NULL AS special_to_date,
CONCAT('https://shopxyz.com/out/pictures/generated/product/1/87_87_75/',av.OXPIC1) AS thumbnail,
CONCAT('https://shopxyz.com/out/pictures/generated/product/1/540_340_75/',av.OXPIC1) AS small_image,
CONCAT('https://shopxyz.com/out/pictures/master/product/1/',av.OXPIC1) AS image,
concat('https://shopxyz.com/',s.OXSEOURL) AS url_path,
av.OXINSERT AS created_at,
DATE_FORMAT(av.OXTIMESTAMP,'%Y-%m-%d') AS updated_at
FROM datenbankname.oxv_oxarticles_de av inner JOIN datenbankname.oxv_oxartextends_de x
LEFT OUTER JOIN datenbankname.oxobject2category c ON av.OXID=c.OXOBJECTID
LEFT OUTER JOIN datenbankname.oxseo s ON  av.OXID = s.OXOBJECTID
where av.OXID = x.OXID 
AND c.OXCATNID LIKE '%9d1ae0aba06471f01f86924b520b414c%'
AND av.OXSTOCK > 0
;

Daten: 44 Artikel, davon 38 mit av.OXSTOCK > 0
Diese 38 ergeben zusammen 71 Einträge in der oxseo. Von denen gehören 42 zu Artikeln die keine Varianten sind und davon wiederum sind 11 eine URL mit der versteckten Kategorie. Von den 71 gehören die restlichen 29 zu Variantenartikeln, aber keine davon ist eine URL mit der versteckten Kategorie.

Frage 4: Warum gibt es letztere nicht, obwohl diese Variantenartikel der versteckten Kategorie zugeordnet sind?

(*) Für die Erklärung des * mach ich ein anderes Thema auf: Tipps für oxid 6.x Einsteiger für die Forumssuche

Danke Euch!

Im Zuge weiterer Vesuche, Oxid besser zu verstehen und meine Fragen aus dem ersten Beitrag im Thraed suchte ich etwas über die Datenbankstruktur von Oxid, aber fand leider auch da nichts aktuelles. Etwas Hilfe bietet der Artikel über das Datenbankdesign. Im Wiki fand ich was altes, was aber nicht so gut hilft. Wo finde ich die aktuelle Datenbankstruktur dokumentiert - außer in der Datenbank selbst?

oxparentid wie unter https://bisweb.me/blog/datenbankdesign-kennen-lernen.html vermerkt. Dort am besten den OXID Framework Code betrachten wie im Admin oder Frontend die Varianten eines Artikels in der Abfrage zur Datenbank geholt werden.

Indem mit einer Variable arbeitest.

Dies geht am einfachsten indem die gleiche Methode nimmst wie im OXID Framework.

Kommt drauf an ob die Variantenartikel eine eigene SEO URL besitzen.

Fazit

Am besten sind Deine Fragen im Anwendungsfall zu erklären. Da die konkreten Antworten auch immer von der konkreten verwendeten OXID Framework Version abhängen. Wäre meine Empfehlung Du näherst Dich Schritt für Schritt an. Greifst Dir ein Anwendungsfall raus und probierst Dir die Frage über Recherche in OXID Framework Code zu beantworten.

Die Daten in der Datenbank letztendlich nur eine Hülle, die eigentliche Zusammenhänge stecken im Code. Übers Datenbankdesign kannst Du nur Tabellenstruktur und die Abhängigkeiten/Zugehörigkeiten der Tabellen untereinander ermitteln. Da hilft eventuell eine Software wie z.B. Navicat for SQL Server | Verwalten, gestalten & verändern Sie Ihre Datenbank auf einfache Weise

Vielen Dank @indianer3c Tim, genug Input um die Zeit des Shutdown zu nutzen und in den Code einzusteigen. :roll_eyes: Und am Ende wahrscheinlich neue Fragen. :upside_down_face: Deshalb noch nicht als Lösung markiert.

1 Like

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.