MySQL Problem

Tommy57

Erfahrenes Mitglied
Hallo,

ich komme gerade an einer Stelle nicht weiter.

Ich habe eine Tabelle, die ungefähr so aufgebaut ist:

ALTER NAME TEST
13 Thomas 3
12 Marc 3
12 Thomas 2
... … …
... ... ...


Nun möchte ich gerne ein einziges SQL-Statement schreiben, welches mir folgende Werte zurück gibt:
'ANFANGSBUCHSTABE NAME' 'NAME' 'ANZAHL UNTERSCHIEDLICHER ALTER BEIM SELBEN NAMEN' 'TEST1'(bool) 'TEST2'(bool) 'TEST3'(bool)

Das Ergebnis sollte dann so aussehen:
T Thomas 2 false true true

Ich hoffe, ich konnte das Problem verständlich erklären.

Gruß
 
Ich würde folgendermaßen ran gehen:

SELECT SUBSTRING(NAME, 0, 1) AS letter, NAME, count(DISTINCT ALTER) AS anzahl, ....
GROUP BY NAME

Also im Prinzip müsste ich jetzt die insgesamt 4 Booleans noch hinten dran hängen. Wichtig ist hier, dass ich nicht die einzelnen Zeilen doopelt und dreifach habe, sondern wirklich jeden Namen immer nur exakt einmal.
 
Für den Test kannst du MAX nehmen. Da False=0 und True=1 ist, hast du 0 wenn der Name nie den Testwert enthält und 1 wenn er ihn enthält

SQL:
SELECT
	LEFT(`name`, 1) AS letter,
	`name`,
	COUNT(DISTINCT `alter`) AS anzahl,
	MAX(test=1) AS test1,
	max(test=2) AS test2,
	MAX(test=3) AS test3
FROM
	test
GROUP BY
	`name`

PS: Name und Alter sind ganz schlechte Feldnamen, da es auch SQL-Ausdrücke sind muss man sie immer in ` schreiben
PPD: Bitte in Zukunft deine SQLs in [code=sql]...[/code] Tags schreiben
 
Zuletzt bearbeitet von einem Moderator:
Super danke, ich teste es gleich mal.

Die Namen habe ich jetzt hier nur so geschrieben. Die Datenbank, an der ich gerade arbeite ist ziemlich umfangreich und das alles hier zu posten wäre zu viel gewesen. Mir hat nur dieses MAX gefehlt.
1.000 Dank!
 
Zurück