Ankündigung

Einklappen
Keine Ankündigung bisher.

Alle Daten in einer Spalte

Einklappen

Neue Werbung 2019

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

  • Alle Daten in einer Spalte

    Liebes Forum,

    ich bin neu hier und hoffe ihr könnt mir helfen.
    Eigentlich ist meine Frage zunächst eher ein mysql Thema. Ich google nun schon seit ca. zwei Tagen und kriege es einfach nicht hin. Meine mysql Kenntnisse reichen eben einfach nicht aus.

    Ich habe folgende Tabelle:
    id cont_typ cont_id cont_val
    1 1 1 Klaus
    2 2 1 Mustermann
    3 1 2 Sabine
    4 2 2 Blondhaar
    5 1 3 Billy
    6 1 4 James T.
    7 2 3 TheKid
    8 2 4 Kirk














    Haben will ich aber dass hier:
    cont_id name (cont_typ=2) vorname (cont_typ=1)
    1 Klaus Mustermann
    2 Sabine Blondhaar
    3 Billy TheKid
    4 James T. Kirk








    Ich habe verschachtelte select's probiert, es mit temporären Tabellen versucht, concat's überlegt. Aber ich komme einfach nicht darauf.

    Gruß
    Markeese


  • #2
    Hallo,

    du kannst über die cont_id auf die selbe Tabelle joinen.
    Code:
    SELECT
        cont_1.cont_id,
        cont_1.cont_val,
        cont_2.cont_val
    FROM
        tabelle AS cont_1
    INNER JOIN
        tabelle AS cont_2
            ON cont_1.cont_id = cont_2.cont_id AND cont_2.cont_typ = 2
    WHERE
        cont_1.cont_typ = 1
    [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
    [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

    Kommentar


    • #3
      Ich würde hinter

      Code:
       cont_2.cont_val as name,
       cont_1.cont_val as vorname
      das as setzen sonst hast Du zwei Spalten mit dem gleichen Spaltennamen

      Kommentar


      • #4
        Alternativ geht das auch über einen sog. Pivot-Select den ich selbst neulich brauchte (MySQL: Gruppieren und Gruppenelemente mit in der Zeile ausgeben).
        Die generierte SQL aus
        PHP-Code:
        $typ = array(=> 'vorname',=> 'nachname');
        $sql $db->buildPivotSelect('t','cont_id','cont_typ',$typ,'cont_val'); 
        lautet für MySQL
        Code:
        SELECT
          `cont_id`  ,
          MAX(CASE WHEN  `cont_typ` =1 THEN  `cont_val`  END) AS  `vorname` ,
          MAX(CASE WHEN  `cont_typ` =2 THEN  `cont_val`  END) AS  `nachname` 
        FROM  `t` 
        WHERE  `cont_typ`  IN(1,2)
        GROUP BY  `cont_id`

        Kommentar


        • #5
          Hey,

          wenn Ihr wüsstet was ich alles ausprobiert habe und wie großartig es ist, eine auch für mich nachvollziehbare Lösung zu bekommen.
          Es klappt Prima!

          Vielen Dank

          Kommentar

          Lädt...
          X