Alt 03.06.2011, 09:39:26   #1 (permalink)
Erfahrener Benutzer
Benutzerbild von Papenburger

ID: 336361
Lose-Remote

Reg: 08.05.2006
Beiträge: 1.162
Papenburger
Standard GELÖST: Mehrere Zeilen als mehreren Spalten ausgeben?

Hallo,

ich habe mal wieder ein Problem.

Derzeit speicher ich Daten von Stellenangeboten in mehreren Tabellen die wie folgt aufgebaut ist:

Jobs
ID Titel
1
Mechatroniker
2
Anwendungsentwickler

Branchen
ID Beschreibung
1
KFZ 1
2
KFZ 2
3
EDV / IT

Jobs2Branche
ID JOB_ID BRANCHEN_ID
1
1
1
2
1
2
3
2
3

Wenn ich die Daten per SQL auslese und über die Tabellen Joine, dann bekomme ich mehrere Zeilen eines Jobs:

Ergebnis
ID JOB_ID Titel BRANCHEN
1
1
Mechatroniker KFZ 1
2
1
Mechatroniker KFZ 2
3
2
Anwendungsentwickler EDV / IT

Mit diesem Ergebnis könnte ich zwar per PHP weiterarbeiten, aber ich möchte so wenig Datenmanipulation machen wie möglich. Deshalb hier nun meine Frage.

Gibt es eine Möglichkeit die Darstellung oben anders zu machen. Also das für Jede Branche des Jobs eine weitere Spalte angefügt wird:

Gewünschtes Ergebnis
ID JOB_ID Titel BRANCHEN 1 BRANCHEN 2
1
1
Mechatroniker KFZ 1 KFZ 2
3
2
Anwendungsentwickler EDV / IT 

Kann man diese Darstellung per SQL erzeugen oder muss ich Zwangsläufig über PHP die Daten manipulieren? Die Ausgabe kann/könnte auch Komma- oder Pipesepariert in einer einzelnen Tabelle stehen....

Dies würde die Weiterverarbeitung erheblich vereinfachen.


Vielen Dank für eure Hilfe!
Papenburger

Geändert von Papenburger (03.06.2011 um 13:34:02 Uhr) Grund: GELÖST
Papenburger ist offline   Mit Zitat antworten
Gesponsorte Links
Alt 03.06.2011, 10:36:18   #2 (permalink)
Multitalent
Benutzerbild von joschilein

ID: 9301
Lose-Remote

joschilein eine Nachricht über ICQ schicken
Reg: 05.05.2006
Beiträge: 1.414
joschilein genießt hohes Ansehenjoschilein genießt hohes Ansehenjoschilein genießt hohes Ansehenjoschilein genießt hohes Ansehenjoschilein genießt hohes Ansehenjoschilein genießt hohes Ansehenjoschilein genießt hohes Ansehenjoschilein genießt hohes Ansehenjoschilein genießt hohes Ansehenjoschilein genießt hohes Ansehenjoschilein genießt hohes Ansehen
Standard

Hmm eine fertige Lösung habe ich nicht, dafür aber zwei Ideen:

1. Wenn die Anzahl der möglichen Branchen stark beschränkt ist, kannst du z.B. 3 Subselects machen, die jeweils mit einem Limit-Offset arbeiten

2. Ein Subselect könnte auch alle Branchenergebnisse anzahlunabhängig kommasepariert in eine einzige Spalte packen, die dann relativ problemlos per explode() weiterverarbeitet werden kann.

Vermutlich gibt es auch noch andere Möglichkeiten, ich würde jedenfalls mal mit der zweiten anfangen.


Heute schon gepixelt
joschilein ist offline   Mit Zitat antworten
Alt 03.06.2011, 11:37:31   #3 (permalink)
Erfahrener Benutzer
Benutzerbild von Papenburger

ID: 336361
Lose-Remote

Reg: 08.05.2006
Beiträge: 1.162
Papenburger
Standard

Zitat:
Zitat von joschilein Beitrag anzeigen
1. Wenn die Anzahl der möglichen Branchen stark beschränkt ist, kannst du z.B. 3 Subselects machen, die jeweils mit einem Limit-Offset arbeiten
Dadurch dass ich nie weiß, wieviele Branchen angegeben werden, würde diese Lösung schon außer Betracht kommen.

Zitat:
Zitat von joschilein Beitrag anzeigen
2. Ein Subselect könnte auch alle Branchenergebnisse anzahlunabhängig kommasepariert in eine einzige Spalte packen, die dann relativ problemlos per explode() weiterverarbeitet werden kann.
Das Subselect würde dann innerhalb der zu selectieren Spalten gemacht werden oder wo muss dies dann hin? Dies wäre zwar nicht das optimalste, aber immerhin schon besser als mehrfacheinträge abzufangen.

Zitat:
Zitat von joschilein Beitrag anzeigen
Vermutlich gibt es auch noch andere Möglichkeiten, ich würde jedenfalls mal mit der zweiten anfangen.
Mir würde aber auch nichts anderes mehr einfallen...

Vielleicht kann mir hier jemand ein Beispiel geben, wie ich das machen muss...

Geändert von Papenburger (03.06.2011 um 11:42:44 Uhr)
Papenburger ist offline Threadstarter   Mit Zitat antworten
Alt 03.06.2011, 11:54:36   #4 (permalink)
be forever curious
Benutzerbild von tleilax

ID: 27936
Lose-Remote

Reg: 20.04.2006
Beiträge: 2.259
tleilax genießt hohes Ansehentleilax genießt hohes Ansehentleilax genießt hohes Ansehentleilax genießt hohes Ansehentleilax genießt hohes Ansehentleilax genießt hohes Ansehentleilax genießt hohes Ansehentleilax genießt hohes Ansehentleilax genießt hohes Ansehentleilax genießt hohes Ansehentleilax genießt hohes Ansehen
Standard

Wenn ich das richtig verstanden habe, müsste Dir GROUP_CONCAT() weiterhelfen...
.lange tage und angenehme nächte, tlx
:.whatthemovie.com (Screenshots raten) | PHP ExportForce-Klasse
tleilax ist offline   Mit Zitat antworten
Alt 03.06.2011, 12:20:47   #5 (permalink)
Erfahrener Benutzer

ID: 272843
Lose-Remote

Reg: 01.02.2007
Beiträge: 1.814
marac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehen
Standard

Die Frage ist doch, was willst du hinterher mit diesen Branchen-Infos anfangen? Sollen sie nur in einer Tabelle angezeigt, oder irgendwie weiterverarbeitet werden? Für eine Weiterverarbeitung (sortieren, filtern,...) ist das Konstrukt mit mehreren Branchen pro Zeile grundsätzlich nicht wirklich gut geeignet, wenn es allerdings nur um eine Anzeige geht, ist - wie theilax schreibt - GROUP_CONCAT der richtige Weg. Solltest du - wie von joschilein vorgeschlagen - die Infos später wieder vereinzeln wollen (z.B. mit Explode()), müsstest du natürlich sicherstellen, dass das Trennzeichen, das bei GROUP_CONCAT verwendet wird, nicht auch in den Branchennamen selbst auftaucht, sonst fällt dein explode() auf die Nase.
Und nun gebe ich ab zur Werbung:
marac ist offline   Mit Zitat antworten
Alt 03.06.2011, 13:33:33   #6 (permalink)
Erfahrener Benutzer
Benutzerbild von Papenburger

ID: 336361
Lose-Remote

Reg: 08.05.2006
Beiträge: 1.162
Papenburger
Standard

Zitat:
Zitat von tleilax Beitrag anzeigen
Wenn ich das richtig verstanden habe, müsste Dir GROUP_CONCAT() weiterhelfen...
Genau das hab ich gesucht. Es wird zwar nun Komma-Separiert ausgegeben, aber für eine XML, reicht dies ;-)

Danke !
Papenburger ist offline Threadstarter   Mit Zitat antworten
Alt 11.06.2011, 23:19:58   #7 (permalink)
Erfahrener Benutzer

ID: 118459
Lose-Remote

Reg: 20.04.2006
Beiträge: 4.493
flaschenkind genießt hohes Ansehenflaschenkind genießt hohes Ansehenflaschenkind genießt hohes Ansehenflaschenkind genießt hohes Ansehenflaschenkind genießt hohes Ansehenflaschenkind genießt hohes Ansehenflaschenkind genießt hohes Ansehenflaschenkind genießt hohes Ansehenflaschenkind genießt hohes Ansehenflaschenkind genießt hohes Ansehenflaschenkind genießt hohes Ansehen
Standard

Zitat:
Zitat von Papenburger Beitrag anzeigen
Genau das hab ich gesucht. Es wird zwar nun Komma-Separiert ausgegeben, aber für eine XML, reicht dies ;-)
Man kann das Trennzeichen auch selber angeben.

PHP-Code:
1:
SELECT GROUP_CONCAT(spalte SEPARATOR ";"
Viele Grüße
flaschenkind
flaschenkind ist offline   Mit Zitat antworten
Alt 13.06.2011, 19:23:34   #8 (permalink)
Erfahrener Benutzer
Benutzerbild von Papenburger

ID: 336361
Lose-Remote

Reg: 08.05.2006
Beiträge: 1.162
Papenburger
Standard

Zitat:
Zitat von flaschenkind Beitrag anzeigen
Man kann das Trennzeichen auch selber angeben.

PHP-Code:
1:
SELECT GROUP_CONCAT(spalte SEPARATOR ";"
Jap, hab ich schon erahnt, probiert und herausgefunden bzw. auch nachgelesen ;-)

Danke euch allen!
Papenburger ist offline Threadstarter   Mit Zitat antworten
Antwort

Gesponsorte Links

Anzeige


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[PHP/MySQL] doppelte Einträge von mehreren spalten in verschiedenen Zeilen in abhängigkeit vom Datum anzeigen Flieschi Programmierung 12 06.01.2011 15:43:58
[MySQL] Mehrere Zeilen aus der DB auf mal löschen SugarFairy Programmierung 2 22.07.2007 17:47:10
[MySQL] Zeilen suchen, mit mehreren IDs flaschenkind Programmierung 3 23.12.2006 23:15:38
[CSS] komplette Tabelle mit 2 Zeilen und 3 Spalten ottili Programmierung 5 07.08.2006 15:52:43
[PHP]Problem beim Ausgeben mehrerer Spalten (versch. Farben) eggman Programmierung 2 16.07.2006 11:09:10


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:29:54 Uhr.