PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   MySQLi/PDO/(MySQL) (http://www.selfphp.de/forum/forumdisplay.php?f=22)
-   -   Einfacher Stammbaum > Abfrageproblem (http://www.selfphp.de/forum/showthread.php?t=22523)

Ameliore 05.12.2009 17:35:46

Einfacher Stammbaum > Abfrageproblem
 
Hallo

Ganz blutige Anfängerin bin ich ja nicht (mehr), aber ich habe wohl ein kleines Problem in meinen Überlegungen, bei welchem mir die Lösung bisher nicht gelungen ist.

Es geht um Stammbäume.
Eigentlich fand ich den DB Aufbau relativ simpel:

1. Tabelle enthält die Informationen zu den einzelnen Individuen, Primärschlüssel ist für jedes derselbigen selbstverständlich einzigartig.

tabelle chiens
chien_id, chien_name, chien_balbla.. undsoweiter


2. Tabelle enthält die Felder Kind, Mutter, Vater, wobei ledliglich die Referenzschlüssel aus der ersten Tabelle eingetragen werden.

tabelle parents
id, kind, mutter, vater

Nun möchte ich eine Abfrage auf die zweite Tabelle haben (Referenz ist in der Regel die Kind-ID, da es ja darum geht, dessen Eltern zu finden), dabei einen JOIN auf die 1. Tabelle machen. Geht es nur darum, das "Kind" in der 1. Tabelle zu suchen, ist es einfach.

SELECT * FROM parents WHERE kind_id = $id LEFT JOIN chiens ON chiens_id = kind_id;

So. Nun will ich aber, dass gleichzeitig das Gleiche für die Eltern passiert. Da die Eltern aber ein Resultat der gesamten Suchabfrage darstellen, wird es schwierig.
Generell möchte ich wissen, ob es überhaupt möglich ist, in einer einzigen Abfrage Abfrageergebnisse zu verwenden, die weitere Abfragen erlauben.

Ich habe bereits versucht, SELECT-Befehle zu verschachteln. Aber diese müssen auch eindeutige Referenzwerte haben (so scheint mir), die nicht auf Resultate der ersten Abfrage zurückgehen.

Vielleicht kann mir ja jemand auf die Sprünge helfen, mir sagen, warum ich den Wald vor lauter Bäumen nicht sehen kann.

Vielen Dank :) Ameliore

DokuLeseHemmung 05.12.2009 18:35:40

AW: Einfacher Stammbaum > Abfrageproblem
 
Zitat:

Eigentlich fand ich den DB Aufbau relativ simpel:
Ja?



Wie wäre es mit:

Tabelle Personen:
id | name | gebutsdatum | gebutsort | geschlecht


Tabelle Eltern:
Person_id | Eltern_id



Und nein, mit einer Abfrage wirst du kaum auskommen. Denn Bäume wollen rekursiv durchlaufen werden.

Ckaos 07.12.2009 11:12:46

AW: Einfacher Stammbaum > Abfrageproblem
 
Hallo,

Zitat:

Zitat von Ameliore (Beitrag 132860)
SELECT * FROM parents WHERE kind_id = $id LEFT JOIN chiens ON chiens_id = kind_id;

Du meintest sicher das where nach dem join.

Eigentlich ist es mit dem vorpost erledigt aber wenn du nicht im ersten step
die Eltern der Eltern usw haben möchtest versuche es mit mehreren joins.

Code:

SELECT *
FROM parents as a
LEFT JOIN chiens as b ON b.chiens_id = a.kind_id
LEFT JOIN chiens as c ON c.chiens_id = a.vater_id
LEFT JOIN chiens as d ON d.chiens_id = a.mutter_id;

oder mit subselects

Code:

SELECT b.chiens_name as kind_name,
(select chiens_name from chiens where chiens_id=parent.mutter_id) as  mutter_name,
(select chiens_name from chiens where chiens_id=parent.vater_id) as  vater_name,
FROM parents as a
LEFT JOIN chiens as b ON b.chiens_id = a.kind_id;

beides aber nur für kleinere Projekte geeignet.

mfg

ckaos


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:25:53 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.