Složitější LEFT JOIN – MS SQL – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Složitější LEFT JOIN – MS SQL – Fórum – Programujte.comSložitější LEFT JOIN – MS SQL – Fórum – Programujte.com

 

David Plšek
~ Anonymní uživatel
1 příspěvek
23. 3. 2016   #1
-
0
-

Tímto dotazem si zjistím počet nepřečtených zpráv pro vybraného uživatele:

SELECT COUNT(*) FROM TabZpravy
LEFT JOIN TabZpravyPrijemce ON TabZpravyPrijemce.ZpravaID = TabZpravy.ID 
WHERE TabZpravyPrijemce.UzivatelID = 1 AND TabZpravyPrijemce.Precteno = 0

Je možné tento dotaz předělat tak , aby vracel počet nepřečtených uživatelů i za předpokladu že by nexistoval odpovíající záznam v tabulce TabZpravyPrijemce? 

Pokud záznam neexistuje, tak se má zato, že zpráva je nepřečtena. 

Děkuji

Nahlásit jako SPAM
IP: 90.177.48.–
peter
~ Anonymní uživatel
4016 příspěvků
24. 3. 2016   #2
-
0
-

   

SELECT
  a.COUNT(*) FROM TabZpravy a
    LEFT JOIN TabZpravyPrijemce b ON b.ZpravaID = a.ID 
WHERE
  a.ID = 1
  AND a.Precteno IS NULL OR a.Precteno = 0
--  AND a.Precteno != 1
--  AND a.Precteno NOT IN (1, 2, 3)
Nahlásit jako SPAM
IP: 2001:718:2601:26c:507:88e...–
peter
~ Anonymní uživatel
4016 příspěvků
24. 3. 2016   #3
-
0
-

oprava, musi tam byt zavorka

(a.Precteno IS NULL OR a.Precteno = 0)

Nahlásit jako SPAM
IP: 2001:718:2601:26c:507:88e...–
Deathmar
~ Anonymní uživatel
2 příspěvky
23. 6. 2016   #4
-
0
-

#3 peter

Asi už pozdě, ale máš tam překlep, má tam být toto:

AND (b.Precteno IS NULL OR b.Precteno = 0)

Krom syntaxe bych se zamyslel spíš nad tím, zda ten dotaz bude vůbec dávat smysl. Pokud nebude existovat odpovídající záznam, pak ti count(*) započítá pro každou zprávu vždy pouze jeden řádek, tj. u ostatních zpráv mohl být příjemců např. většinou víc, ale pokud tam ten záznam nebude vůbec, vrátí to vždycky 1 řádek. Tady je asi na místě to řešit přes dva dotazy, první na Precteno = 0 a druhý na Precteno is null...

Nahlásit jako SPAM
IP: 109.105.40.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 2 hosté

Podobná vlákna

Alternativa k left join? — založil VelkyBubak

Left outer join v javě — založil damegu

Složitější pole — založil Honza

Složitější pole — založil Honza

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý