Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Zwei Werte aus einem Table mit verschiedenen id's auslesen

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von haufe, 5 Februar 2014.

  1. haufe

    haufe Neuer Benutzer

    Hallo

    Ich habe eine Tabelle varchar.
    Der Aufbau:
    value_id,type_id,attribut_id,value

    Aus diesem Table brauche ich zwei Werte(value) mit verschidenen attribute_id's.

    Ist es möglich, sie mit einer SQL Abfrage zu holen?

    Mit union habe ich es probiert, wollte die Werte aber in einem Row aber in zwei Items haben.


    Danke für die Hilfe
     
  2. akretschmer

    akretschmer Datenbank-Guru


    So vielleicht?

    Code:
    test=*# select * from haufe ;
     id | value
    ----+-------
      1 | eins
      2 | zwei
      3 | drei
    (3 rows)
    
    test=*# select array_to_string(array_agg(case when id = 2 then value else null end),'') as itme2, array_to_string(array_agg(case when id = 3 then value else null end),'') as item3 from haufe ;
     itme2 | item3
    -------+-------
     zwei  | drei
    (1 row)
    
    Ist aber PostgreSQL, wird nicht 1:1 in MySQL gehen. Beachte auch FAQ zu Zeilen zu Spalten.
     
  3. ukulele

    ukulele Datenbank-Guru

    Sicher ist das möglich mit einem Join. Die Tabelle wie einen Datentyp zu nennen finde ich persönlich aber nicht sehr schön.
    Code:
    SELECT    t1.value_id,
            t1.type_id,
            t1.attribut_id,
            t1.value,
            t2.value_id,
            t2.type_id,
            t2.attribut_id,
            t2.value
    FROM    tabelle_varchar t1,
            tabelle_varchar t2
    WHERE    t1.value_id = 1
    AND        t2.value_id = 2
     
  4. haufe

    haufe Neuer Benutzer

    Vielen Dank, geht 1A :)
     
  5. akretschmer

    akretschmer Datenbank-Guru

    Macht aber einen Cross-Join, bei großen Tabellen besteht Explosionsgefahr für den Server ;-)

    (also die Lösung von @ukulele , meine nicht)
     
  6. ukulele

    ukulele Datenbank-Guru

    Ja man muss halt sehen das es wirklich immer nur ein Datensatz auf beiden Seiten gibt.
     
  7. Hony%

    Hony% Datenbank-Guru

    Daher nutze ich grundsätzliche die explizite Syntax:
    Code:
    SELECT [field],...
    FROM [table]
    INNER JOIN [table]
    ON [expression]
    Ist meiner Meinung nach deutlich lesbarer und weniger fehleranfällig.
     
  8. ukulele

    ukulele Datenbank-Guru

    In diesem Fall hast du aber nicht zwingend eine ON [expression] da die Datensätze nicht zwingend in einem Zusammenhang stehen.
     
  9. Hony%

    Hony% Datenbank-Guru

    Muss ja nicht. Deine Bedingungen funktionieren auch mit ON:
    Code:
    ON         t1.value_id = 1
    AND        t2.value_id = 2
    Nachtrag:
    MySQL mag sowas wohl doch nicht.

    Nachtrag 2:
    Doch - geht. Hatte Gänsefüsschen die MySQL nicht mag...
     
    Zuletzt bearbeitet: 5 Februar 2014
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden