Je mist het feit dat weergaven in MySQL geen subquery's toestaan in de from
clausule. Ze zijn toegestaan in de select
en where
en having
clausules echter.
De documentatie is vrij duidelijk:
In jouw geval kun je waarschijnlijk de from
. herschrijven clausule als een gecorreleerde subquery in de select
clausule. Je kunt ook meerdere weergavelagen gebruiken om te doen wat je wilt.
BEWERKEN:
Een SELECT-instructie in SQL heeft de volgende clausules:SELECT
, FROM
, WHERE
, GROUP BY
, HAVING
, en ORDER BY
(volgens de norm). Bovendien voegt MySQL dingen toe zoals LIMIT
, en INTO OUTFILE
. Je kunt dit zien aan de manier waarop MySQL de SELECT
. beschrijft clausule in de documentatie
. Je kunt dit ook zien in de documentatie voor bijna elke database.
Bewerkingen zoals join
maken deel uit van de FROM
clausule (vergelijkbaar met WITH ROLLUP
maakt deel uit van de GROUP BY
en DESC
maakt deel uit van de ORDER BY
). Dit lijken misschien mysterieuze syntactische conventies, maar het wordt belangrijk wanneer er een beperking is zoals die hierboven.
Misschien is een van de redenen voor de verwarring een inspringstijl die als volgt gaat:
select . . .
from t1
inner join t2
on . . .
Waar de join-instructies op een rij staan onder de select
. Dit is misleidend. Ik zou dit schrijven als:
select
from t1 join
t2
on . . .
Alleen de select
clausules staan opgesteld onder de select.