PHP rocks! wünscht allen Mitgliedern einen guten Rutsch ins neue Jahr 2017 !!!
Hinweis: Das Forum zieht um! Um keine Datenverluste zu haben, schalten wir zwecks Übernahme der Daten das Forum am Sonntag, den 24.04.2016 um ca. 21:00 Uhr offline und passen anschliessend die DNS-Einträge an.
www.php-rocks.de wird euch dann nach den Aktualisierungen der DNS-Server wieder wie gewohnt uneingeschränkt zur Verfügung stehen.
Danke für euer Verständnis!

Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
JOIN sinnvoll zusammenfassen ?
#1
Hallo,

Ich erstelle gerade einen Artikel-Export, der auf multiple Textresourcen zurückgreift.
Diese binde ich derzeit einzeln mit JOIN ein, könnte mir aber vorstellen, daß das cleverer gelöst werden könnte?!

Vorraussetzungen
Ich arbeite auf einem MSSQL-Server, aber ich denke die Frage ist durchaus allgemein stellbar.
Als Grundlage dienen zwei Tabellen:
  • ShopItems
  • ShopTextResourcesLanguages
In der ShopItems befinden sich u.a. die Integer-Spalten Bullet1 bis Bullet5.
In der ShopTextResourcesLanguages befinden sich zu der ItemId die entsprechenden Texte pro LanguageId.

Aktueller Vorgang
Zur Zeit ziehe ich mir die Texte, in dem ich die ShopTextResourcesLanguages 5x JOINe, pro Bullet 1x.
Code:
SELECT
   ShopItems.ItemId,
   Bullet1.[Description] as Bullet1,
   Bullet2.[Description] as Bullet2,
   Bullet3.[Description] as Bullet3,
   Bullet4.[Description] as Bullet4,
   Bullet5.[Description] as Bullet5

FROM
   ShopItems
JOIN
   ShopTextResourcesLanguages Bullet1 ON ShopItems.Bullet1 = Bullet1.TextId
JOIN
   ShopTextResourcesLanguages Bullet2 ON ShopItems.Bullet2 = Bullet2.TextId
JOIN
   ShopTextResourcesLanguages Bullet3 ON ShopItems.Bullet3 = Bullet3.TextId
JOIN
   ShopTextResourcesLanguages Bullet4 ON ShopItems.Bullet4 = Bullet4.TextId
JOIN
   ShopTextResourcesLanguages Bullet5 ON ShopItems.Bullet5 = Bullet5.TextId

Natürlich gehe ich u.a. noch auf die LanguageId ein, aber das sollte für die Frage irrelevant sein.

Meine Frage ist nun:
Macht das Sinn oder gibt es eine bessere Lösung, die Text-Ressourcen einzuhängen?
Eine Anpassung der DB-Struktur ist keine Lösung, weil es sich dabei um unser WaWi-System handelt.


Würde mich über Anregungen bzw. Tipps freuen
Danke
Antworten
#2
Zitat:Meine Frage ist nun:
Macht das Sinn oder gibt es eine bessere Lösung, die Text-Ressourcen einzuhängen?
Eine Anpassung der DB-Struktur ist keine Lösung, weil es sich dabei um unser WaWi-System handelt.


SQL (gegebenes Datenmodell)
Das macht Sinn. GgF. muss man mit Outer Joins arbeiten, falls das Datenmodell keine Existenz der FK Einträge auf die Bullets verlangt.

SQL (änderbares Datenmodell)
Die Bulletverweise sind nicht normalisiert, das wäre aber erstrebenswert, weil es flexibler ist und das SQL dann einfacher ausfallen würde.

Ressourcen
Wenn die Items wenige sind oder die Bullets und die im GUI nicht immer gleich angezeigt werden, kann man die Descriptions ggF. auch nachträglich holen oder in PHP puffern.  Davon habe ich aber keine Ahnung Smile
Antworten
#3
Hallo und herzlich willkommen im Forum,

Danke für Deine Antwort.
Das DB-Modell ist gegeben und nur bedingt anpass-/erweiterbar.
Ich erstelle auf die Weise einen Export direkt aus dem MSSQL Server. Es scheint aber, daß es auf die Quelldaten und -struktur nicht viel sinnvoller machbar ist.

Danke trotzdem.

Gruß Arne
Antworten


Gehe zu: