Announcement

Collapse
No announcement yet.

Dynamische Spaltennamen in Abfrage?!

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Dynamische Spaltennamen in Abfrage?!

    Hallo zusammen!

    Der Titel verrät schon: wenn das, was ich suche, einen mir bekannten Namen hätte, hätte ich schon gezielt gesucht. Aber solange ich es nicht benennen kann, versuche ich es mal mit Fragen.

    Ich habe eine Tabelle, in der verschiedene Produkte erfasst sind. Darin gibt es eine Spalte category. Abhängig von der Kategorie sollen verschiedene Produkte eine Vielzahl von Attributen erhalten, die produktspezifisch und damit für jede Kategorie anders sind und zudem nach verschiedenen Kriterien suchbar sein sollen, u.a. auch Wertebereiche!

    Bisher ist es so gelöst, dass in einer Tabelle je Kategorie ein Feld die Attribute komma-separiert auflistet und ein weiteres Feld die zugehörigen Werte komma-separiert enthält, diese Werte werden dann durch ein Perl-Script abgeklappert.
    Furchtbar ineffizient! Wie löst man so etwas in SQL, wonach kann ich suchen?

  • #2
    Durch Normalisierung ( Kategorien, Attribute als eigene Relationen und Zuordung über Zwischentabelle)

    Comment


    • #3
      Das ging ja schnell
      Ich versuche mir gerade, etwas unter Deiner Antwort vorzustellen und kann mir auch denken, dass es die Lösung darstellt, aber ich verstehe es noch nicht ganz.
      Normalisierung lässt mich zuerst mal an die Informatik-Vorlesung vor 6 Jahren denken, in der Tabellen mit redundanten Spalteneinträgen normalisiert werden sollten. Das bringt mich im Moment leider nicht weiter.

      Ich mach mal ein konkretes Beispiel.
      Es gäbe die Kategorien transistor und diode.
      Für die Bauteile der ersten Kategorie sollen die Attribute "vce","ic" und "hfe" suchbar sein, wobei bei der Abfrage jeweils Bereiche eingegeben werden können sollen (oh je was ein Satz).
      Für die Kategorie diode sollen die Attribute "vr" und "id" heissen.

      Mein bisheriger Ansatz mit den komma-separierten Werten war eine Krücke, um die anfalllenden Daten schon mal erfassen zu könnne. Suchen kann man darin nicht wirklich vernünftig.
      Der nächste Gedanke war dann, pro Kategorie eine Tabelle anzulegen, die in einer "Zeile 0" die Attributnamen enthält, ggf. noch Marker, die aussagen, was mit den Attributen passieren soll (Auswahl, Zahl, Bereich...) und dann die jeweiligen Werte der in der entsprechenden Kategorie befindlichen Bauelemente.

      Aber sowas lässt sich ja nicht wirklich gut joinen oder sonstwie verarbeiten - für jede Kategorie prüfen, ob die Tabelle da ist und dann abfragen scheint mir keine elegante Lösung zu sein.

      Comment


      • #4
        Kategorie
        ID Bez 1 Transistor
        2 Diode

        Attribute:
        ID Kat Bez
        1 1 vce
        2 1 ic
        3 1 hfe
        4 2 vr
        5 2 id

        Produkte
        ID Kat ... 567 1
        ...

        Werte
        ID Produkt Attribut Wert
        765 1 1 10.5
        ...

        Comment


        • #5
          Das sieht gut aus! So kann ich es umsetzen, denke ich.
          Vielen Dank dafür!

          Comment

          Working...
          X