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

Mehrere m.meta_keys auslesen

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von -paul-, 14 April 2016.

  1. -paul-

    -paul- Neuer Benutzer

    Guten Tag liebe Gemeinde!

    Ich würde sehr gerne jemanden helfen, der gleichzeitig mehrere m.meta_keys auslesen möchte.

    Hier ist das funktionierende Beispiel mit einem m.meta_key = '3' :

    SELECT FROM_UNIXTIME( a.START , '%Y-%m-%d %H:%i:%s' ) AS datum,post_title, venue, m.meta_key, m.meta_value FROM 24hb_ai1ec_events a, 24hb_posts b, 24hb_postmeta m where a.post_id = b.id and m.post_id = a.post_id and m.meta_key = '3' ORDER BY datum

    Ingesamt gibt es in der Tabelle 20 verschiedene: (m.meta_key = '4', m.meta_key = '5', m.meta_key = '6' ect.)

    Somit bin ich auf der Suche nach der richtigen Syntax um alle gleichzeitig auslesen zu können.

    Besten Dank für Eure Hilfe!

    Paul

     
  2. akretschmer

    akretschmer Datenbank-Guru

    ich denke, mit ... m.meta_key in (x,y,z) ... kommst Du zum Ziel. Du solltest expliziete Join-Syntax bevorzugen, ist sicherer.
     
    -paul- gefällt das.
  3. -paul-

    -paul- Neuer Benutzer

    Super! Danke für Deinen Tipp! :)
     
    akretschmer gefällt das.
  4. -paul-

    -paul- Neuer Benutzer

    Guten Morgen!

    Ich habe eine Nachfrage:

    and m.meta_key in (3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25) ORDER BY datum

    funktioniert. Danke noch mal dafür.

    Ziel ist es, alle Daten in eine CSV Datei zu exportieren.

    Stand jetzt: Es werden in der Tabelle alle Daten untereinander in jeweils eine Spalte exportiert. Ideal wäre es aber, die Ausgabe so zu formatieren, dass alle ausgegebenen Daten in einer Zeile und jeder Wert in einer Spalte angezeigt werden.

    Beste Grüße

    Paul
     
  5. akretschmer

    akretschmer Datenbank-Guru

    die Anzahl der Spalten im Resultat hängt dann davon ab, wie viele gefunden werden - das wird so nix. Du kannst maximal die Werte aggregieren und als Komma-Liste ausgeben.

    Code:
     
    test=*# select * from foo;
     id |  val   
    ----+--------
      1 | wert1
      2 | wert2
      3 | wert3
      4 | wert4
      5 | wert5
      6 | wert6
      7 | wert7
      8 | wert8
      9 | wert9
     10 | wert10
     11 | wert11
     12 | wert12
     13 | wert13
     14 | wert14
     15 | wert15
    (15 rows)
    
    test=*# select array_to_string(array_agg(val),',') from foo where id in (2,3,4,5);
      array_to_string   
    -------------------------
     wert2,wert3,wert4,wert5
    (1 row)
    
     
    -paul- gefällt das.
  6. -paul-

    -paul- Neuer Benutzer

    Ich werde es prüfen und berichten. Danke
     
  7. akretschmer

    akretschmer Datenbank-Guru

    das array_agg() kenn mysql nicht, da gibt es group_concat oder sowas in der Richtung ...
     
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