Max Function in Join
am 07.08.2006 18:57:23 von Stephan Menzel
Hallo,
kann ich 2 Tabellen verknüpfen mit der Max Funktion?
Beispiel:
Tabelle 1 enthäht Name, status
Tabelle 2 statusindex und status beschreibung!
kann man dann eine Abfrage erstellen, nach dem schema
SELECT Name, Statusbeschreibung From tabelle1 Left Join tabelle2
ON (MAX(tabelle1.status)=tabelle2.statusindex) GROUP BY Name;
cu Stephan
Re: Max Function in Join
am 07.08.2006 20:01:38 von Thomas Rachel
Stephan Menzel wrote:
> Hallo,
>
> kann ich 2 Tabellen verknüpfen mit der Max Funktion?
> Beispiel:
> Tabelle 1 enthäht Name, status
> Tabelle 2 statusindex und status beschreibung!
>
> kann man dann eine Abfrage erstellen, nach dem schema
>
> SELECT Name, Statusbeschreibung From tabelle1 Left Join tabelle2
> ON (MAX(tabelle1.status)=tabelle2.statusindex) GROUP BY Name;
>
>
> cu Stephan
create temporary table t1 (name char(3), status int);
create temporary table t2 (idx int, besch char(10));
insert into t1 (status,name) values(1,'z'),(10,'z'),(100,'z'),(16,'x')
(256,'x');
insert into t2 (100,'Zehner'),(256,'Sechzehner');
Entweder mit Subselect:
SELECT Name, besch From (select name, max(status) as s from t1 GROUP BY
Name) tt Left Join t2 ON (s=t2.idx);
oder ohne:
select t1.name, besch from t1 left join t1 as t0 on t0.status>t1.status and
t0.name=t1.name join t2 on (t1.status=t2.idx) where t0.status is null;
ERROR 1137 (HY000): Can't reopen table: 't1'
Ups. Ok, temporary tables dürfen nicht doppelt referenziert werden. Mit
permanenten würde obiges gehen...
create temporary table t0 select * from t1;
select t1.name, besch from t1 left join t0 on t0.status>t1.status and
t0.name=t1.name join t2 on (t1.status=t2.idx) where t0.status is null;
sollte eigentlich beides Deine Anforderungen erfüllen...
Thomas
--
Erst wenn die letzte Netiquette zertreten, der letzte Checkgroups
misachtet, die letzte Gruppe totverschoben und die letzte Hierarchie
gelöscht wurde, dann werdet ihr merken, dass HTML euch nicht antworten
kann. (M. Mehring in dcpmn)