Andreas2014 0 Geschrieben 21. April 2015 Melden Geschrieben 21. April 2015 (bearbeitet) Hallo SQL-Experten,ich habe eine mysql-Tabelle mit Personendaten, darunter die Geburtsdaten. Nun möchte ich per php eine "Alters"-Tabelle erzeugen, in der nur das Alter der Personen aufgeführt wird, und zwar nur einmal. Das wollte ich mit DISTINCT lösen. Die Altersberechnung funktioniert, aber DISTINCT funktioniert nicht, es werden alle Zeilen doppelt und dreifach ausgelesen. Mein Code sieht so aus: "SELECT DISTINCT TIMESTAMPDIFF(YEAR, geburtsdatum, NOW()) AS alter_jahr FROM Tabelle" Also statt: 15 Jahre17 Jahre20 Jahre21 Jahre30 Jahre32 Jahre kommt das dabei raus: 15 Jahre15 Jahre17 Jahre20 Jahre20 Jahre20 Jahre... usw. ---------------------------------------------- Edit: NOW() kann wohl wegen der sich ständig ändernden Uhrzeit nicht mit DISTINCT funktionieren ;-) Mit CURDATE() funktioniert das ganze jetzt :-) Jetzt ergibt sich aber ein anderes Problem: Es existieren auch verstorbene Personen in der Tabelle. Damit deren Alter nicht bis CURDATE() berechnet wird, sondern bis zum Feld "todesdatum", habe ich eine UNION-Abfrage gemacht, wobei ich einmal nach den noch lebenden und einmal nach den schon verstorbenen suche. Das klappt auch. Aber die Sortierung nicht, es ist ein heilloses Kuddelmuddel. ORDER BY scheint nicht zu funktionieren. Hier ist mein Code: (SELECT DISTINCT TIMESTAMPDIFF(YEAR, geburtsdatum, todesdatum) AS alter_jahr FROM Tabelle WHERE todesdatum NOT LIKE '0000-00-00') UNION (SELECT DISTINCT TIMESTAMPDIFF(YEAR, geburtsdatum, CURDATE()) AS alter_jahr FROM Tabelle WHERE todesdatum LIKE '0000-00-00') Edit: ORDER BY funktioniert, wenn ich bei der UNION-Abfrage die äußeren Klammern weglasse, also folgendermaßen: SELECT DISTINCT TIMESTAMPDIFF(YEAR, geburtsdatum, todesdatum) AS alter_jahr FROM Tabelle WHERE todesdatum NOT LIKE '0000-00-00' UNION SELECT DISTINCT TIMESTAMPDIFF(YEAR, geburtsdatum, CURDATE()) AS alter_jahr FROM Tabelle WHERE todesdatum LIKE '0000-00-00' ORDER BY alter_jahr" Problem damit gelöst :-) Andreas bearbeitet 21. April 2015 von Andreas2014
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden