LEFT JOIN Ausgabe Anpassen

Termos

Mitglied
Hallo Community,


ich hab gerade mal wieder nen Knoten im Kopf.

Tabellen:
Personal, Merkmal, Wert

Personal
A
B
C

Merkmal
U1
U2

Wert
100
20
40
.
.
.
.

Ich möchte nun Personal mit den beiden Joinen, klappt wunderbar.
Ausgabe:

Personal / Merkmal / Wert
A / U1 / 100
A / U2 / 80
A / U3 / 40
B / U1 / 10
B / U2 / 20


Ausgabe Soll:

Personal / Merkmal / Wert
A / U1 / 100
/ U2 / 80
/ U3 / 40
B / U1 / 10
/ U2 / 20



Hab meine Lösung heute morgen leider gelöscht, ich hatte es ohne großes Union und spalten/Zellen verschiebe hinbekommen ;(

Ansatz momentan:

SQL:
select
	p.PERSONAL, pm.NAME, pw.PERSONALMERKMAL, pw.WERT
FROM 
	PERSONAL p 
		left join PERSONALMERKMALWERT pw 
			on p.PERSONAL = pw.personal
		left join PERSONALMERKMAL pm on pw.PERSONALMERKMAL = pm.PERSONALMERKMAL
WHERE PW.PERSONALMERKMAL LIKE 'U_%'
 
Das ausblenden vom wiederholdenen Wert würde ich in PHP (oder mit was auch immer du arbeitest).

Wenn es wirklich in der DB sein soll und es sich um MySQL handelt, kannst du mit einer Variablen den Wert davor rübernehmen und vergleichen. Hier mein Test dazu
Bei Oracle gibt es da glaub einen speziellen Befehl dazu.
Bei MS Access kannst du es vergessen. Dort gehts nur in einem Report.
Bei MariaDB dürfte es ähnlich zu MySQL gehen
Bei MS SQL, PostgreSQL, Pervasive DB, SQLLite etc. hab ich grad spontan keine Ahnung ob und wie es gehen könnte.

Aber nochmals: Das ist grundsätzlich etwas, das man nicht in der Datenbank macht.
 
Vielen Dank für deine Hilfe,

Muss es im SQL Server auswerten und benutze es dann für nen OLAP Cube.
Da die Daten aus einem ERP-System stammen - kann ich die Struktur der Tabelle leider nur Virtuell Normalisieren.

Hab es jetzt so gelöst - nicht schön, aber selten ;(


SQL:
select 
	'Alle_Mitarbeiter' as 'Alle', 
	p.Personal,
	p.Name, 
	CONVERT(VARCHAR(19),p.Eintritt,104) as Eintritt, 
	CONVERT(VARCHAR(19),p.Austritt,104) as Austritt, 
	p.Durchwahl, 
	p.Telefon, 
	CONVERT(VARCHAR(19),p.Geburtsdatum,104) as Geburtstag,
	pmw0.personalmerkmal,
	pmw0.wert,
	pmw1.personalmerkmal,
	pmw1.wert,
	pmw2.personalmerkmal,
	pmw2.wert,
	pmw3.personalmerkmal,
	pmw3.wert,
	pmw4.personalmerkmal,
	pmw4.wert,
	pmw5.personalmerkmal,
	pmw5.wert,
	pmw6.personalmerkmal,
	pmw6.wert,
	pmw7.personalmerkmal,
	pmw7.wert
FROM 
	Personal p 
		LEFT JOIN Personalmerkmalwert pmw0 on (p.personal = pmw0.personal AND pmw0.personalmerkmal = 'U_1')
		LEFT JOIN Personalmerkmalwert pmw1 on (p.personal = pmw1.personal AND pmw1.personalmerkmal = 'U_2')
		LEFT JOIN Personalmerkmalwert pmw2 on (p.personal = pmw2.personal AND pmw2.personalmerkmal = 'U_3')
		LEFT JOIN Personalmerkmalwert pmw3 on (p.personal = pmw3.personal AND pmw3.personalmerkmal = 'U_4')
		LEFT JOIN Personalmerkmalwert pmw4 on (p.personal = pmw4.personal AND pmw4.personalmerkmal = 'U_5')
		LEFT JOIN Personalmerkmalwert pmw5 on (p.personal = pmw5.personal AND pmw5.personalmerkmal = 'U_6')
		LEFT JOIN Personalmerkmalwert pmw6 on (p.personal = pmw6.personal AND pmw6.personalmerkmal = 'U_7')
		LEFT JOIN Personalmerkmalwert pmw7 on (p.personal = pmw7.personal AND pmw7.personalmerkmal = 'U_8')
where ABTEILUNG NOT IN ('ALTR','UFT') AND ABTEILUNG IS NOT NULL AND EINTRITT IS NOT NULL
 
Zurück