phpbar.de logo

Mailinglisten-Archive

Select-Frage

Select-Frage

Sebastian Mendel lists at sebastianmendel.de
Mon Dez 4 10:13:32 CET 2006


Hanjo Grüßner schrieb:

> sri, es ist die -version 4.1.11
> 
> Ab welcher Version sind denn Subselects möglich ?

4.1


> Ich habe eine table: namen (Darin sind eben die Namen gespeichert).
> Dann eine table: grade. Dort sind zwei femdkey´s namen grad_id und  
> name_id, sowie ein Datum (seit) gespeichert.
> name_id bezieht sich natürlich auf table namen.
> 
> Dann habe ich eine table: dgrad, hierin sind soetwas wie  
> 'Dienstbezeichungen' gespeichert. der Fremdkey 'grad_id' bezieht sich  
> hierauf.
> 
> Dann habe ich eine table: punkte
> Hierin ist ebenfalls der fremdkey 'name_id' auf die table 'namen' drin,  
> sowie gewisse Punkte, ggf. mehrfach zu jeder name_id.
> 
> Mit diesem Select:
> SELECT name, vorname, Dienstgrad, date_format(seit,'%d.%m.%Y') as 'Dgd  
> seit', points
>         from namen, grade, dgrad left join punkte on punkte.name_id=namen.id
>         where grade.name_id = namen.id and grad_id = dgrad.id
> 
> bekomme ich zu einer Person verschiedene Dienstgrade.

SELECT
	`namen`.`name`,
	`namen`.`vorname`,
	`dgrad`.`Dienstgrad`,
	DATE_FORMAT(`grade`.`seit`, '%d.%m.%Y') AS `Dgd  seit`,
	SUM(`punkte`.`points`) AS `Summenpunkte`
FROM
	`namen`
LEFT JOIN
(	SELECT
		`name_id`,
		`seit`,
		`grad_id`
	ORDER BY
		`seit` DESC
	WHERE
		`name_id` = `namen`.`id`
	LIMIT 1
) AS `grade`
ON
	`grade`.`name_id` = `namen`.`id`
LEFT JOIN
	`dgrad`
ON
	`grad_id` = `dgrad`.`id`
LEFT JOIN
	`punkte`
ON
	`punkte`.`name_id` = `namen`.`id`
GROUP BY
	`namen`.`id`
ORDER BY
	`namen`.`name`,
	`dgrad`.`Dienstgrad`


probiers mal so, habs nicht getestet



-- 
Sebastian Mendel

www.sebastianmendel.de

-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive