Rolf b: mysql: Query gesucht

Beitrag lesen

So, hab mal wieder was gelernt. Ich habe SQL in den 80er Jahren beigebracht bekommen, und das MySQL Handbuch sagt:

For the query to be legal in SQL92, a nonaggregated column must be omitted from the select list or named in the GROUP BY clause.

SQL99 and later permits such nonaggregates per optional feature T301 if they are functionally dependent on GROUP BY columns: If such a relationship exists between tid and TAnzahl, TVK and Nachlass, the query is legal. This would be the case, for example, were custid a primary key of customers.

Ich habe die Spaltennamen aus dem Handbuch durch die Spaltennamen aus deinem Beispiel ersetzt.

Demnach ist deine QUERY so nicht völlig legal. Die funktionale Abhängigkeit zwischen tid und TAnzahl und TVK besteht, weil TID der Primary Key der T Tabelle ist. Die funktionale Abhängigkeit zwischen TID und Nachlass besteht nicht, weil MID kein eindeutiger Key in die LT Tabelle ist.

Nun greift offenbar eine andere Logik, die im MYSQL 5.6 Handbuch beschrieben ist: Wenn eine nonaggregate Column nicht im GROUP BY aufgeführt ist, weist er das Statement nicht ab, sondern wählt einfach einen beliebigen Wert aus der Gruppe. Bei Dir offenbar die 0. Hättest Du für PID=2646 einen Wert ungleich 0 für den Nachlass drin, dann würdest Du vermutlich den sehen.

Rolf