PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   MySQLi/PDO/(MySQL) (http://www.selfphp.de/forum/forumdisplay.php?f=22)
-   -   Tabellen verknüpfen mit unterschiedlichen Formaten (http://www.selfphp.de/forum/showthread.php?t=25496)

zeroseven 30.01.2015 23:17:58

Tabellen verknüpfen mit unterschiedlichen Formaten
 
Guten Tag,

Ich kenn mich wirklich garnicht aus. Mir werden Tabellen mit Kundendaten auf den Server geworfen, ich muss sie eigentlich nur neu sortieren und als .csv exportieren, um sie zur DHL und in das Buchhaltungssystem einzuspeisen.

Generell kein Problem. Aber irgendwie sind die ankommende Tabelle und die auszugebende unterschiedlich formatiert.

Die Tabelle mit der die Daten kommen sieht wie folgt aus:

order_id label index value
11 vorname 0 max
11 nachname 1 mustermann
11 anschrift 2 hauptstraße2
11 PLZ 3 12345
11 ort 4 berlin

Danach kommt der nächste Kunde mit der order_id 12, der Index beginnt wieder bei 0.

Ich brauche sie aber in folgendem Format:

order_id vorname nachname anschrift plz ort
11 max mustermann hauptstraße2 12345 berlin
12

Danach kommt der nächste Kunde mit order_id 12 und so weiter

Kann mir eventuell jemand weiterhelfen? Ich google jetzt schon Ewigkeiten, aber nachdem ich mich nicht wirklich auskenne weiß ich nichtmal, nach was ich suchen muss.

Ich bedanke mich schon einmal im vorraus.

(Hab die Tabellen eigentlich ordentlich eingetippt, aber scheinbar löscht er die Leerzeichen zwischendrinnen einfach raus. Sorry das sie jetzt so verzogen sind.)

pguser 01.02.2015 08:57:37

AW: Tabellen verknüpfen mit unterschiedlichen Formaten
 
Code:

test=*# select * from zeroseven ;
 order_id |  label  | index |    value
----------+-----------+-------+--------------
      11 | vorname  |    0 | max
      11 | nachname  |    1 | mustermann
      11 | anschrift |    2 | hauptstraße2
      11 | plz      |    3 | 12345
      11 | ort      |    4 | berlin
      12 | vorname  |    0 | andreas
      12 | nachname  |    1 | egal
      12 | anschrift |    2 | irgendwo
      12 | plz      |    3 | 4711
      12 | ort      |    4 | erde
(10 rows)

Time: 0,219 ms
test=*# select order_id, array_to_string(array_agg(vorname),'') as vorname, array_to_string(array_agg(nachname),'') as nachname, array_to_string(array_agg(anschrift),'') as anschrift, array_to_string(array_agg(plz),'') as plz, array_to_string(array_agg(ort),'') as ort from (select order_id, case when index=0 then value else null end as vorname, case when index=1 then value else null end as nachname, case when index=2 then value else null end as anschrift, case when index=3 then value else null end as plz, case when index=4 then value else null end as ort from zeroseven ) foo group by order_id;
 order_id | vorname |  nachname  |  anschrift  |  plz  |  ort
----------+---------+------------+--------------+-------+--------
      11 | max    | mustermann | hauptstraße2 | 12345 | berlin
      12 | andreas | egal      | irgendwo    | 4711  | erde
(2 rows)

Mache Dich mit Formatierungsmöglichkeiten hier im Forum vertraut.


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:06:46 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.