Ankündigung

Einklappen
Keine Ankündigung bisher.

Tabellen miteinander verknüpfen MYSQL

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Tabellen miteinander verknüpfen MYSQL

    Hallo,
    ich bin neu hier und habe eine Frage zu MYSQL Tabellen, die miteinander verknüpft werden sollen.

    Tabelle 1: kasjos_joomgallery
    Spalten: id, imgtitle, imgauthor, imgtext, hidden where hidden = 0


    Beispiel:
    id, imgtitle, imgauthor, imgtext, hidden
    1, Art A, Autor A, Text A, 0
    2, Art B, Autor B, Text B, 0
    3, Art A, Autor A, Text A, 0
    4, Art C, Autor C, Text C, 1
    5, Art D, Autor D, Text D, 0
    6, Art E, Autor E, Text E, 0
    7, Art A, Autor A, Text A, 0
    ....
    Id 4 soll aus der Ursprungstabelle nicht mit berücksichtigt werden, hidden = 1).

    Tabelle 2: kasjos_joomgallery_image_details
    Spalten: id, details_key, details_value

    Die Tabelle 2 ist so aufgebaut:
    id, details_key, details_value
    1, additional.Breite_min, 12.5
    1, additional.Breite_max, 15.5
    1, additional.Länge_min, 22.5
    1, additional.Länge_max, 35.5
    1, additional.Streifen_min, 3
    1, additional.Streifen_max, 5
    1, additional.fibulae, 7
    .... (weitere additional.fields)
    2, additional.Breite_min, 2.5
    2, additional.Breite_max, 5.5
    2, additional.Länge_min, 12.5
    2, additional.Länge_max, 25.5
    2, additional.Streifen_min, 4
    2, additional.Streifen_max, 6
    2, additional.fibulae, 9
    .....(weitere additional.fields)
    3, additional.Breite_min, 6.5
    3, additional.Breite_max, 8.5
    3, additional.Länge_min, 32.5
    3, additional.Länge_max, 45.5
    3, additional.Streifen_min, 7
    3, additional.Streifen_max, 9
    3, additional.fibulae, 5
    ....(weitere additional.fields)

    4
    5
    6
    7
    usw.
    .... = es gibt noch weitere detail_keys Zeilen mit anderen Werten als details_values


    Diese beiden Tabellen sind über die Id miteinander verbunden.

    Ich hätte nun gerne zwei unterscheidliche Tabellen aus den Inhalten der beiden, die so aussehen sollten:

    Tabelle Resultat A
    Id, imgtitle, imgauthor, imgtext, hidden, additional.Breite_min, additional.Breite_max, additional.Länge_min, additional.Länge_max, additional.Streifen_min, additional.Streifen_max, additional.fibulae....(weitere detail_values)
    1, Art A, Autor A, Text A, 0, 12.5, 15.5, 22.5, 35.5, 3, 5, 7 ...
    2, Art B, Autor B, Text B, 0, 2.5, 5.5, 12.5, 25.5, 4, 6, 9 ...
    3, Art A, Autor A, Text C, 0, 6.5, 8.5, 32.5, 45.5, 7, 9, 5 ...
    ....

    Da ein und dieselbe Art mehrfach vorkommen kann (siehe Id 1, Id 3 und Id7) wäre eine Tabelle sinnvoll(er) in der Spalten zusammengefasst werden. In den Spalten imgtitle, imgauthor, imgtext, hidden steht bei identischen Arten identische Information, während in den anderen Feldern unterschiedliche Informationen enthalten sein können. Es handelt sich dabei um Zahlenwerte z.B. "additional.Breite_min - additional.Breite_max", additional.Länge_min - additional.Länge_max", additional.Streifen_min - additional.Streifen_max". Diese müssten zu einer Spalte mit dem kleinsten Wert von allen Werten der Spalte für ein und dieselbe Art und dem größten Wert von allen Werten der Spalte für ein und dieselbe Art zusammenfasst werden.

    Tabelle Resultat B
    Id, imgtitle, imgauthor, imgtext, hidden, "additional.Breite_min - additional.Breite_max", additional.Länge_min - additional.Länge_max", additional.Streifen_min - additional.Streifen_max", additional_fibulae....
    1, Art A, Autor A, Text A, 0, 6.5 - 15.5, 22.5 - 45.5, 3 - 9, 5 - 7...
    2, Art B, Autor B, Text B, 0, 2.5 - 5.5, 12.5 - 25.5, 4 - 6, 9 ...
    5, Art D, Autor D, Text D, 0, ....

    Das bedeutet in Tabelle B sind zwei Felder dann als ein Feld zusammengefasst (wie Länge min und max oder Breite min und max).
    Nicht in jedem Feld der Tabelle 2 sind auch Werte enthalten, manchmal stehen nur im max Feld etwas, dann sollte in Tabelle Resultat B nur der eine Wert stehen ohne einen Bindestrich.
    Ist so etwas über SELECT group_concat möglich?
    Vielen Dank und Grüße


  • #2
    Zitat von MaggiW Beitrag anzeigen
    Ist so etwas über SELECT group_concat möglich?
    Vielen Dank und Grüße
    Nein, aber via JOIN, und für die Range-Angaben via passender Range-Datentypen.
    PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

    Kommentar


    • #3
      Zitat von akretschmer Beitrag anzeigen
      Nein, aber via JOIN, und für die Range-Angaben via passender Range-Datentypen.
      Mal so als Spielerei:

      Code:
      test=*# select * from master;
       id | name
      ----+-------
        1 | bild1
        2 | bild2
      (2 rows)
      
      Time: 0,229 ms
      test=*# select * from detail;
       m_id |    key     | val
      ------+------------+-----
          1 | breite_von |  10
          1 | breite_bis |  20
          1 | laenge_von |  15
          1 | laenge_bis |  25
      (4 rows)
      
      Time: 0,200 ms
      test=*# select m.name, int4range(d1.val, d2.val) as breite from master m left join detail d1 on m.id=d1.m_id and d1.key='breite_von' left join detail d2 on m.id=d2.m_id and d2.key='breite_bis';
       name  | breite
      -------+---------
       bild1 | [10,20)
       bild2 | (,)
      (2 rows)
      PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

      Kommentar

      Lädt...
      X