TomTom: MySQL: SELECT-Abfrage mit JOINS und MAX()

Beitrag lesen

Hi,

ich habe die folgenden Tabellen (die fuer die Abfrage relevanten Spalten):

Tabelle: kunden
+-------------+-------------+
| kunden_id   | kunden_name |
+-------------+-------------+
| 1           | kunde-1     |
| 2           | kunde-2     |
| 3           | kunde-3     |
| 4           | kunde-4     |
| 5           | kunde-5     |
+-------------+-------------+

Tabelle: objekte
+-------------+-------------+-------------+
| objekt_id   | kunden_id   | objekt_name |
+-------------+-------------+-------------+
| 1           | 1           | objekt-1    |
| 2           | 2           | objekt-2    |
| 3           | 3           | objekt-3    |
| 4           | 4           | objekt-4    |
| 5           | 4           | objekt-5    |
| 6           | 4           | objekt-6    |
+-------------+-------------+-------------+

Tabelle: objekt_notizen
+---------------------+-------------+-----------+-----------+
| objekt_notizen_id   | objekt_id   | notiz     | aktiv     |
+---------------------+-------------+-----------+-----------+
| 1                   | 1           | notiz-1-1 | Y         |
| 2                   | 1           | notiz-1-2 | N         |
| 3                   | 1           | notiz-1-3 | Y         |
| 4                   | 1           | notiz-1-4 | Y         |
| 5                   | 2           | notiz-2-1 | Y         |
| 6                   | 2           | notiz-2-2 | Y         |
| 7                   | 4           | notiz-4-1 | Y         |
| 8                   | 4           | notiz-4-2 | Y         |
| 9                   | 5           | notiz-5-1 | Y         |
| 10                  | 6           | notiz-6-1 | Y         |
+---------------------+-------------+-----------+-----------+

Tabelle: services
+--------------+-------------+--------------+---------------+
| service_id   | objekt_id   | service_text | service_datum |
+--------------+-------------+--------------+---------------+
| 1            | 1           | service-1    | 2007-10-10    |
| 2            | 2           | service-2    | 2007-10-11    |
| 3            | 3           | service-3    | 2007-10-12    |
| 4            | 1           | service-4    | 2008-02-01    |
| 5            | 2           | service-5    | 2008-02-02    |
| 6            | 3           | service-6    | 2008-02-03    |
| 7            | 5           | service-7    | 2008-02-04    |
+--------------+-------------+--------------+---------------+

Ich moechte nun eine ausfuehrliche Gesamtliste der Objekte ausgeben - in der folgenden Form:
Pro Objekt eine Zeile,
alle aktiven Objekt-Notizen sollen aufgelistet werden - objekte.notiz = 'Y',
zusaetzlich soll das letzte Service aufgelistet werden - MAX(service.service_datum).

Es gibt jedoch Kunden ohne Objekte
und Objekte ohne Objekt-Notizen bzw. Objekte mit mehreren aktiven Notizen
sowie Objekte ohne Service-Einsaetze.

Ich scheitere bei den verschachtelten LEFT OUTER JOINS.
Brauche ich eine Unterabfragen um das letzte Service zu erhalten?

+--------------+-------------+----------------+--------------+------------------+
| Kunden       | Objekte     | Objekt-Notizen | Service      | letztes Services |
+--------------+-------------+----------------+--------------+------------------+
| kunde-1      | objekt-1    | notiz-1-1      | Service 4    | 2008-02-01       |
|              |             | notiz-1-3      |              |                  |
|              |             | notiz-1-4      |              |                  |
+--------------+-------------+----------------+--------------+------------------+
| kunde-2      | objekt-2    | notiz-2-1      | Service 5    | 2008-02-02       |
|              |             | notiz-2-2      |              |                  |
+--------------+-------------+----------------+--------------+------------------+
| kunde-3      | objekt-3    |                | Service 6    | 2008-02-03       |
+--------------+-------------+----------------+--------------+------------------+
| kunde-4      | objekt-4    | notiz-4-1      |              |                  |
|              |             | notiz-4-2      |              |                  |
+--------------+-------------+----------------+--------------+------------------+
| kunde-4      | objekt-5    | notiz-5-1      | Service 7    | 2008-02-04       |
+--------------+-------------+----------------+--------------+------------------+
| kunde-4      | objekt-6    | notiz-6-1      |              |                  |
+--------------+-------------+----------------+--------------+------------------+
| kunde-5      |             |                |              |                  |
+--------------+-------------+----------------+--------------+------------------+

Vielen Dank im Voraus fuer Loesungsansaetze und Hilfen,
Tom.