Vinzenz Mai: Mysql, join, count(), where...

Beitrag lesen

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