Hallo,
erm. ja ... ich möchte in der Ausgabe ja _alle_ daten aus fall haben, aber die von fall_historie limitiert auf eins... das ist der kleine knackpunkt der sache...
Nein, das ist der große Knackpunkt. Jedenfalls sehe ich keine Lösung mit _einer_ Abfrage. Da MySQL nicht zu meinen Hobbys gehört, weiß ich nicht, ob MySQL SELECTs joinen kann. Wenn ja, musst Du die Tabelle fall mit einem auf jeweils einen Datensatz je fall_id limitierten SELECT der Tabelle fall_historie, welcher den zeitpunkt einschränkt, joinen. Wenn nein, dann wird eine Programmiersprache das aus zwei Resultsets zusammenbringen müssen.
Versteh ich das übrigens mit den Joins richtig, das sich left, right und inner join nur unterscheiden, wenn tabellenfelder NULL sind und nicht vorhanden?
Naja, im Prinzip ist das so. Genau liefert:
ein INNER JOIN eine Datensatzmenge mit Feldinhalten aus zwei Tabellen, bei denen die Datensätze der ersten Tabelle Entsprechungen, über die JOIN-Bedingung, in der zweiten Tabelle haben,
ein LEFT JOIN eine Datensatzmenge mit Feldinhalten aus zwei Tabellen, wobei alle Datensätze der LEFT-Tabelle im Resultset sind, egal, ob diese Entsprechungen in der zweiten Tabelle haben, wenn ja, werden diese Entsprechungen als Feldinhalte der Felder der zweiten Tabelle dargestellt, wenn nein, werden die nicht vorhandenen Feldinhalten der Felder der zweiten Tabelle als NULL-Werte dargestellt.
Ein RIGHT JOIN entspricht einem LEFT JOIN, nur, dass immer alle Datensätze der RIGHT-Tabelle im Resultset sind.
LEFT- und RIGHT JOINs sind OUTER JOINs. Manche RDBMS kennen auch noch einen FULL OUTER JOIN, bei dem alle Datensätze _beider_ Tabellen im Resultset sind. Wenn es wechselseitige Entsprechungen über die JOIN-Bedingung gibt, werden die Feldinhalte der jeweils anderen Tabelle dargestellt, wenn es keine Entsprechungen gibt, werden die nicht vorhandenen Feldinhalten der Felder der jeweiligen Tabelle als NULL-Werte dargestellt.
viele Grüße
Axel