Max Function in Join

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)