JOIN

5 отговора 287 прегледа
#1

JOIN

nachi 2 tablici .. da se izkarat sichki ot lqvata i broq na suotvetsvashtite im w dqsnata ...
tva query:
SELECT folders.name, count(messages.ID) from folders LEFT JOIN messages on folders.ID=messages.FolderID WHERE folders.userID in (0,1) AND messages.UserID in (0,1) group by folders.ID;

mi vrushta samo folders.id det imat > 0 messages ... ko trea mu se prai na tva che da vurne sichki foders dori i count() da e 0?

Отговор
в отговор на dirdel #2

Re: JOIN

Probvai tova:

select folders.name,
(select count(m1.ID)
from messages m1
where m1.FolderID = folders.ID) as messages_count
from folders LEFT JOIN messages m2 on
folders.ID=m2.FolderID
WHERE folders.userID in (0,1) AND
m2.UserID in (0,1)
group by folders.ID;


1. Vnimavai obache za byrzodeistvie - probvai go v realna situacia
2. Vij dali ne mojesh da mahnesh OUTER JOIN-a i da premestish m2.UserID in
(0, 1) vyv vlojenia SELECT

Uspeh

P.S. Izviniavai za gadnoto podrejdane ama HTML si kaza dumata, k'vo da pra'ish?

Отговор
в отговор на dirdel #3

Re: JOIN

mahni messages.UserID in (0,1) ot where
shoto kogato nqma zapisi messages.UserID = NULL
ako wse pak ti trqbwa twa uslowie she trqbwa da stane
(messages.UserID in (0,1) OR isNull(messages.UserID) )
* samo wij kyw beshe sitsksis na isNull sho ne si spomnqm

Отговор
в отговор на dirdel #4

Re: JOIN

SELECT tblDelovodstvo.ID, COUNT(tblDistribution.ID) AS CountDistributionId
FROM tblDelovodstvo LEFT OUTER JOIN
tblDistribution ON tblDelovodstvo.ID = tblDistribution.ID
GROUP BY tblDelovodstvo.ID

ако правилно съм те разбрал...

при мен работи....имам от порядъка на 1200 записа в лявата и не знам колко в дясната...изпълнява се за по малко от 0.1 сек.

Отговор
в отговор на Zip #5

Re: JOIN

Мъъъничка, но изключително важна корекция

"kogato nqma zapisi messages.UserID = NULL"

да се чете

"kogato nqma zapisi messages.UserID IS NULL"

Linux is like a wigwam - No Windows, No Gates, Apache inside
Отговор
в отговор на Zip #6

Re: JOIN

blagodarq, isNull svurshi rabota

Отговор