Ich habe Mysql (mysql Ver 15.1 Distrib 5.5.52-MariaDB, for Linux (x86_64) using readline 5.1
), und ich schreibe eine solche Abfrage:Mysql: Wie mache ich eine Tabelle in einer Unterabfrage sichtbar?
SELECT
(SELECT count(*)
FROM items
WHERE items.shop_id = shops.id),
(SELECT sum(click)
FROM items
WHERE items.shop_id = shops.id),
(SELECT sum(view)
FROM items
WHERE items.shop_id = shops.id)
FROM shops
Es ist gut funktioniert einfach. Aber heute treffe ich ein Problem, das eine SQL so braucht:
SELECT
(SELECT count(*)
FROM items
WHERE items.shop_id = shops.id),
(SELECT sum(click)
FROM items
WHERE items.shop_id = shops.id),
(SELECT sum(view)
FROM items
WHERE items.shop_id = shops.id),
(
SELECT sum(count)
FROM (
SELECT
max(id),
sum(view) AS 'count'
FROM items
WHERE items.shop_id = shops.id
GROUP BY items.cat_id) a
)
FROM shops
Mysql gibt Unknown column 'shops.id' in 'where clause'
. Also meine Frage:
Warum
shops.id
sichtbar ist in Unterabfrage mit einer Tiefe wie(SELECT sum(click) FROM items WHERE items.shop_id = shops.id)
, aber nicht sichtbar, wenn auf eine Unterabfrage mit zwei Tiefen kommt?Gibt es eine Möglichkeit,
shops.id
in einer Abfragetiefe zwei sichtbar zu machen?
versuchen hinzufügen 'als' zu den Geschäften 'von den Geschäften als sh', und ändern Sie 'Geschäfte' in allen subqery zu 'sh' –
@ АлексейМокрев Funktioniert nicht. – Sayakiss
Wenn eine der folgenden Antworten Ihr Problem gelöst oder Ihnen geholfen hat, markieren Sie es bitte als Antwort und/oder verbessern Sie die Antwort. –