Ilja: schwierige Abfrage MySQL

Beitrag lesen

moin,

[code lang=sql]
SELECT sub.tripid AS tripid, sub.starttime AS starttime, sub.destinationid AS destinationid
FROM (
   /* subselect Anfang*/
   SELECT
      vehicles2trips.tripid AS tripid,
      trips.starttime AS starttime,
      trips.destinationid AS destinationid
   FROM vehicles2trips
   LEFT JOIN
      trips
   ON (
      trips.id = vehicles2trips.tripid
   )
   WHERE vehicles2trips.vehicleid = /* given_vehicleid */
   /* ende subselect */
) AS sub
WHERE (
   sub.starttime < "/* given_date */"
)
ORDER BY sub.starttime DESC
LIMIT 1

ich mag LIMIT nicht, das hat zwei gründe. zum einen ist es mysql spezifisch, läßt sich also nicht portieren. aber damit könnte ich leben. das andere argument ist, es besteht dabei immer eine latente gefahr, nicht alle datensätze zu erwischen. wenn man den nur wirklich einen datensatz haben will, dann mag das noch klappen, aber was wenn nicht und sich die werte in der order bei klausel gleichen ? besser ist es immer mit MAX und MIN zu arbeiten.

ich will mich mal auf die anderen aussagen von dir bezüglich meiner post beziehen. zum einen sagst du, ein vehicle hat immer einen trip. wozu dann noch der OUTER JOIN ? zum anderen stellstdu das mit einem frontend sicher und das ist mal gefährlich. damit ist nicht sichergestellt, dass es solche fälle nicht gibt.

antworte später vielleicht noch mal, muss in eine sitzung....

Ilja