Hallo,
SELECT
track.,
COUNT( tm.track_id ) AS meta_count,
pool_track.
FROM
track,
pool_track
LEFT OUTER JOIN (
SELECT track_id
FROM track_meta
) AS tm
ON
tm.track_id = track.track_id
WHERE
track.make_user_id = 1
AND
track.track_id = pool_track.track_id
AND
pool_track.pool_id = 11
ORDER BY
track.artist ASC
LIMIT 0, 50
> Bekomme:
völlig erwartungsgemäß ([seit MySQL 5.0.12](http://dev.mysql.com/doc/refman/5.0/en/join.html))
> ~~~sql
> #1054 - Unknown column 'track.track_id' in 'on clause'
>
Was ist daran falsch?
der Versuch mit dem Einsatz des Kommaoperators ohne Klammerung und einer WHERE-Klausel einen impliziten INNER JOIN zu erzielen, statt einfach die explizite JOIN-Syntax zu verwenden.
Ich gehe über drei Tabellen, wovon eine als Join mit Subselect der mir einfach nur einen Count() übergeben soll.
warum ermittelst Du nicht im Subselect wirklich den gruppierten Wert? So hast Du ein typisch kaputtes Statement, das sowieso höchstens von MySQL akzeptiert wird. In allen DBMS (außer MySQL) musst Du - da Du eine Aggregatsfunktion einsetzt - nach allen Spalten gruppieren, die nicht aggregiert sind.
Freundliche Grüße
Vinzenz