phpbar.de logo

Mailinglisten-Archive

Re: Doppelte DS ausklammern
Archiv Mailingliste mysql-de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Doppelte DS ausklammern



Hallo Ruprecht.

Am Mon, 08 Jan 2001 schrieb Ruprecht Helms:
> >Um die Mitglieder anzuschreiben und die Briefe über die Kinder zu
> >verteilen brauche ich zum einen die Mitglieds-Daten und zum anderen die
> >Namen der Kinder. Das mache ich über eine LEFT JOIN:
> >select mitgl.Name, mitgl.Adr, kind.Vname, kind.Klasse from mitgl left join
> >kind using (MID) where ...
> >
> >Nun bekomme ich aber bei den Mitgliedern mit mehreren Kinder auch
> >ebensoviele Datensätze!
> 
> Sowas geht nur über ein Script, das die Tabellen getrennt 
> durchforstet.   Damit meine ich, dass in der Elterntabelle zuerst 
> abgegriffen wird und dann in einer zweiten Schleife für die zugehörigen Kinder.

Und es geht doch:

select mitgl.Name, mitgl.Adr, kind.Vname, max(kind.Klasse) from
mitgl left join
kind using (MID) where ...  group by Name

allerdings hab ich jetzt noch das Problem, dass das Kind nicht unbedingt
zur ausgegebene Klasse passt, aber das findet sich hoffentlich noch.


> Deins ist das typische Problem bei Datenbanken. Bei solchen Abfragen wird 
> ein sogenanntes Kartesisches Produkt gebildet, d. h. die Tabellen, aus 
> denen die Ergebnisse gebildet werden, werden multipliziert.

Um aus diesem Salat dann das gewünschte herauszufiltern hat man ja sowas
wie WHERE, LEFT JOIN etc.

> Dies ist nicht nur bei mysql so, sondern auch Oracle, SQL-Server, Access, ...

Die haben dafür aber Subselects, Unions usw.
Denn nicht immer lässt sich ein Script dazwischen schalten, so wie bei mir.

Ciao, Rene

-- 

---
*** Weitere Infos zur Mailingliste und MySQL unter http://www.4t2.com/mysql 


Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive