Select + count от 2 таблици
5 отговора
175 прегледа
Select + count от 2 таблици
Здравейте,
Може ли в една заявка да наблъскам заедно
- няколко записа от таблица1
и
- броя на записите от таблица2, в които стойността на една определена колона е равна на стойността на определена колона от таблица1
Ето го моят опит, който предполагам ще ви покаже по-добре, какво ми трябва. Не работи, разбира се, иначе нямаше да питам.
select
tab1.id as id,
count(tab2.id) as numberOfIDsOfTab2
from tab1, tab2
where tab2.drugoId = tab1.id;
Грешката, която се получава е
ERROR 1140: Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no GROUP columns is illegal if there is no GROUP BY clause
Гррр.
Предварително благодаря за помощта.
_nmk
Може ли в една заявка да наблъскам заедно
- няколко записа от таблица1
и
- броя на записите от таблица2, в които стойността на една определена колона е равна на стойността на определена колона от таблица1
Ето го моят опит, който предполагам ще ви покаже по-добре, какво ми трябва. Не работи, разбира се, иначе нямаше да питам.
select
tab1.id as id,
count(tab2.id) as numberOfIDsOfTab2
from tab1, tab2
where tab2.drugoId = tab1.id;
Грешката, която се получава е
ERROR 1140: Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no GROUP columns is illegal if there is no GROUP BY clause
Гррр.
Предварително благодаря за помощта.
_nmk
Re: Select + count от 2 таблици
Не беше лошо да кажеш с каква база си.
Може би това ти трябва:
select
tab1.id as id,
count(tab2.id) as numberOfIDsOfTab2
from tab1, tab2
where tab2.drugoId = tab1.id
GROUP BY tab1.id

Може би това ти трябва:
select
tab1.id as id,
count(tab2.id) as numberOfIDsOfTab2
from tab1, tab2
where tab2.drugoId = tab1.id
GROUP BY tab1.id
Re: Select + count от 2 таблици
ох, ах... MySQL
Дотук хбаво, и аз си го помислих и пробвах, ама връща празен сет, ако няма никакви записи в таб2, които да отговарят на условието. А на мен ми трябва, да ми върне нула (разликата между нула (0) и празен сет е ясна?).
Дотук хбаво, и аз си го помислих и пробвах, ама връща празен сет, ако няма никакви записи в таб2, които да отговарят на условието. А на мен ми трябва, да ми върне нула (разликата между нула (0) и празен сет е ясна?).
Re: Select + count от 2 таблици
select
tab1.id as id,
count(tab2.id) as numberOfIDsOfTab2
from tab1 LEFT JOIN tab2 ON tab2.drugoId = tab1.id
GROUP BY tab1.id
Е тук нищо няма:[линк]
tab1.id as id,
count(tab2.id) as numberOfIDsOfTab2
from tab1 LEFT JOIN tab2 ON tab2.drugoId = tab1.id
GROUP BY tab1.id
Е тук нищо няма:[линк]
Re: Select + count от 2 таблици
Чудесия, точно каквото ми трябваше.
Ще имаш ли малко време и желание да обясниш, какво точно се случва и защо иначе не ставаше?
Ще имаш ли малко време и желание да обясниш, какво точно се случва и защо иначе не ставаше?
Re: Select + count от 2 таблици
Защото LEFT JOIN включва всички редове от "лявата" таблица независимо дали има съответстващи редове в "дясната"
Пробвай това:
CREATE x (a INT);
CREATE y (a INT, b INT);
INSERT INTO x VALUES(1), (2);
INSERT INTO y VALUES(1, 10), (1, 20);
SELECT * FROM x, y WHERE x.a=y.a;
SELECT * FROM x LEFT JOIN y ON x.a=y.a;
И внимателно разгледай резултатите.
Добаве още малко редове и ще ти се изясни съвсем.
salle.online.bg/sig
Пробвай това:
CREATE x (a INT);
CREATE y (a INT, b INT);
INSERT INTO x VALUES(1), (2);
INSERT INTO y VALUES(1, 10), (1, 20);
SELECT * FROM x, y WHERE x.a=y.a;
SELECT * FROM x LEFT JOIN y ON x.a=y.a;
И внимателно разгледай резултатите.
Добаве още малко редове и ще ти се изясни съвсем.
salle.online.bg/sig