yo,
SELECT objekte.*,COUNT(kalender.day) AS freedays FROM kalender,objekte GROUP BY objekte.id ORDER BY objekte.special DESC, freedays DESC
Nun sieht das Ergebnis leider so aus das die special Einträge nicht ganz oben stehen sondern immer nur als erster unter den Datensätzen die die gleiche Menge an freedays haben, ist natürlich von der Logik her richtig aber nicht der Effekt den ich benötige :)
alleine von der ORDER BY Klausel betrachtet funktioniert das so, wie du es haben willst, sprich er würde erst alle specials auflisten und dann erst die Kapazitäten berücksichtigen. insofern würde deine specials mit den eintrag 1 immer vor den datensätzen mit den eintrag 0 stehen.
dein problem ist allen anschein nach ein anderes, nämlich das GROUP BY in der abfrage. normalerweise sind nur spalten in der ausgabe einer abfrage bei der verwendung von GROUP BY erlaubt, die auch in der GROUP BY klausel stehen, bzw. die aggregat-funtkionen sind. ansonsten würde das dbms eine fehlermeldung ausgeben. mysql geht da aber leider einen anderen weg und die folge ist, dass viele immer wieder in diese falle tappen. ich tippe mal, die falsche sortierung ist ein folgeproblem davon.
Ilja