dR.LoL: MySQL

Hi Leude,
Ich habe eine Recht schwierige Aufgabe. Ich habe diese drei Tabellen.
tblPackages --1:n--> tblTesting --n:1--> tblStatus

Zuerst einmal bisschen Erklärungen:
Schlussendlich, brauche ich EINE Abfrage, welche ich dann zusätzlich an die SeitenblätterungsFunktion anbinden kann.
tblStatus bestitzt nur eine ID und eine Specification, welche für's Testing verwendet wird.
Das Testing bestitz unmengen an Test's, bei denen aber nur die neusten Relevant sind (Nein, löschen kommt nicht in Frage, weil die Daten intern trozdem noch gebraucht werden.)
Die Packages sind die, welche betroffen sind mit den Test's.

So jetzt muss die Abfrage so gestaltet werden, dass von tblPackages JEDES angezeigt wird. Order by Name ASC, Version ASC.
Zusätzlich soll in der selben Abfrage enthalten sein, dass nur immer die neusten Packages erscheinen.
Und diese Wiederum sollen den korrekten Status von tblStatus erhalten.

Wie kann ich diese Abfrage angehen? Könnt ihr mir Hilfe leisten?
Dankbarer Gruss vom LoL

PS:
Testing = 37 Einträge
Package = 14 Einträge
Status = 4 Einträge

Bei dieser Abfrage, erhalte ich 37 Treffer:
SELECT tblPackage.Id AS PackageId, tblPackage.*, tblTesting.*, tblStatus.*
FROM SIS.tblPackage
INNER JOIN
  (SIS.tblStatus INNER JOIN SIS.tblTesting ON tblStatus.Id = tblTesting.Fk_StatusId)
ON tblPackage.Id = tblTesting.Fk_PackageId
[Also auf dem Falschen Weg, den ich sollte ja 14 Rows zurück kriegen, so sollte es zumindest am Schluss sein!]

  1. Erweiterung:
    Dieses Statement sieht aus als würde es funktionieren (Nach meinem Hirn) doch leider, kann man kein LIMIT im IN brauchen :((

    SELECT tblPackage.Id AS PackageId, tblPackage.isBase, tblPackage.Name, tblPackage.Version, tblPackage.Path, tblPackage.Filename, tblTesting.Fk_PackageId, tblTesting.Fk_StatusId, tblTesting.AssignedDate, tblStatus.Specification
    FROM SIS.tblTesting
    INNER JOIN (SIS.tblPackage, SIS.tblStatus)
    ON (tblPackage.Id = tblTesting.Fk_PackageId AND tblStatus.Id = tblTesting.Fk_StatusId)
    WHERE tblPackage.Id IN (SELECT tblTesting.Fk_PackageId FROM SIS.tblTesting ORDER BY tblTesting.AssignedDate DESC LIMIT 1)
    ORDER BY tblPackage.Name ASC, tblPackage.isBase DESC, tblPackage.Version ASC

    1. Joa, ech ben de bescht ;-))
      Hans voll powned!

      SELECT tblPackage.Id AS PackageId, tblPackage.isBase, tblPackage.Name, tblPackage.Version, tblPackage.Path, tblPackage.Filename, tblTesting.Fk_PackageId, tblTesting.Fk_StatusId, tblTesting.AssignedDate, tblStatus.Specification
      FROM SIS.tblTesting
      INNER JOIN (SIS.tblPackage, SIS.tblStatus)
      ON (tblPackage.Id = tblTesting.Fk_PackageId AND tblStatus.Id = tblTesting.Fk_StatusId)
      WHERE tblPackage.Id IN
        (SELECT tblTesting.Fk_PackageId FROM SIS.tblTesting ORDER BY tblTesting.AssignedDate DESC)
      GROUP BY tblTesting.Fk_PackageId
      ORDER BY tblPackage.Name ASC, tblPackage.isBase DESC, tblPackage.Version ASC

      1. yo,

        Hans voll powned!

        ich will dich ja nicht bremsen, aber ich sehe da eine kleine GROUP BY klausel und eine große SELECT ausgabe. da hat wieder mal die gemeine mysql falle zugeschnappt....

        Ilja