Gruppierte Anzeige beim Join von zwei Tabellen

Sandor.Wonschik at arvato-mobile.de Sandor.Wonschik at arvato-mobile.de
Mi Mai 6 14:37:42 CEST 2009


Hall Tim,

probier es doch mal auf diese Weise:

SELECT t1.id, t1.feld1, t1.feld2, 
       (SELECT MIN(t2.feldA) FROM tabelle2 as t2 WHERE t1.id = t2.ref_id) as feldA,
       (SELECT COUNT(t2.ref_id) FROM tabelle2 as t2 WHERE t1.id = t2.ref_id) as numRefs
FROM tabelle1 as t1

Für das Feld t2.feldA musst Du dafür sorgen, dass da nur eine Zeile zurückkommt. Das kann man über eine Aggregat-Funktion machen, die das Ergebnis eindeutig macht (also MIN(), MAX(), AVG() oder so). 

Es ist allerdings auch möglich, mit LIMIT 1 zu arbeiten:
(SELECT t2.feldA FROM tabelle2 as t2 WHERE t1.id = t2.ref_id LIMIT 1) as feldA

Mit LIMIT 1 ist das sehr schnell, weil der MySQL einfach nur den ersten Datensatz zurückgibt.

Musst Du mal schauen, was Du da in dem Feld drin hast und was dann Sinn macht.

Viele Grüße,
:-) Sandor


--------------------------------------------------------
Sandor Wonschik         Sandor.Wonschik at arvato-mobile.de
System Engineer         www.arvato-mobile.de
arvato mobile GmbH, Kehrwieder 8, 20457 Hamburg, Germany