phpbar.de logo

Mailinglisten-Archive

AW: [php] merfach Select - Befehl

AW: [php] merfach Select - Befehl

Wolfgang Hauck php_(at)_phpcenter.de
Fri, 10 May 2002 14:41:18 +0200


>Ich mochte eine Ahnentafel fur Hunde bis in die 4 Geneartion bauen,
>ist auch nicht so schwer, aber ich brauche 30 Befehle dieser art :
>(In jedem Datensatz der mySQL-Tabelle ist der Vater mit Verein und
>Nummer, und die Mutter
>mit Verein und Nummer angegeben)

>verein_v  = vereinnummer des Vaters
>zbnr_v  = nummer des Vaters
>verein_m  = vereinnummer der Mutter
>zbnr_m  = nummer der Mutter

>$dog = mysql_fetch_array(mysql_query("select name, verein_v, zbnr_v,
>verein_m, zbnr_m from df_ahnen
>where verein='$verein' && zbnr='$nummer'"));

>$dog1 = mysql_fetch_array(mysql_query("select name, verein_v, zbnr_v,
>verein_m, zbnr_m from df_ahnen
>where verein='$dog[verein_v]' && zbnr='$dog[zbnr_v]'"));
[...]

Hi Danny,

Du suchst in zwei Feldern nach dem naechsten Hund (verein_v, zbnr_v bzw. 
das gleich mit Mutter). Warum uebergibst du eigentlich nicht die ID des 
Vaters und der Mutter?

z.B.:

ID_hund, ID_v, ID_m,[Restliche Daten des Hundes...]

Den Verein und die Zuchtbuchnummer kannst du dann ueber joins ermitteln:

z.B.: alle Urgrossvaeter....

Select d.name as nameurgrossvater .... from df_ahnen as a left join 
df_ahnen as b on a.ID_v = b.ID_hund left join df_ahnen as c on b.ID_v = 
c.ID_hund  left join df_ahnen as d on c.ID_v = d.ID_hund [.....]

Da kriegst du in zwei Querys alle Ahnen bis zur x-ten Generation. Du kannst 
das zwar auch mit zwei Feldern pro Tabelle machen, dauert aber 
logischerweise laenger. Den Select koennte man auch rekursiv erzeugen, da 
laesst sich dann ne function zusammenbasteln, die fuer jede beliebige 
Generationstiefe funzt.

MFG Wolfgang


php::bar PHP Wiki   -   Listenarchive