Spojení - všechny záznamy z pravé tab a vybrané z levé – MySQL – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Spojení - všechny záznamy z pravé tab a vybrané z levé – MySQL – Fórum – Programujte.comSpojení - všechny záznamy z pravé tab a vybrané z levé – MySQL – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
hlucheucho+10
Posthunter
26. 6. 2014   #1
-
0
-

ahoj,

mám následující spojení 

set @u = 'pozn';

select tb.cas as t1, ta.cas as t2, ta.udalost, ta.popis from leva_udalosti as ta
join (select cas, udalost, popis from leva_udalosti where udalost = @u and
popis = 'poznamka') as tb on ta.udalost = @u and ta.cas > tb.cas
group by tb.cas having min(ta.cas)

potřebuji všechny záznamy z tb, tedy i ty, ke kterým neexistuje žádné ta.cas > tb.cas. Jak na to?

hu

Nahlásit jako SPAM
IP: 195.178.67.–
Reklama
Reklama
Satik0
Stálý člen
26. 6. 2014   #2
-
0
-

#1 hlucheucho
zkus left join :)

Nahlásit jako SPAM
IP: 86.49.188.–
hlucheucho+10
Posthunter
26. 6. 2014   #3
-
0
-

left join ani right join nepomůže. Zkoušel jsem to s pohledem, ale vysílání sekvence příkazů bude pro změnu problém na straně klienta.

hu

Nahlásit jako SPAM
IP: 195.178.67.–
hlucheucho+10
Posthunter
26. 6. 2014   #4
-
0
-

 Nakonec nápad přišel

set @u = 'pozn';
set @p = 'poznamka';

select * from (
  select tb.cas as t1, ta.cas as t2, tb.udalost, tb.popis from leva_udalosti as ta
  join (select cas, udalost, popis from leva_udalosti where udalost = @u and
   popis = @p) as tb on ta.udalost = @u and ta.cas > tb.cas
   group by tb.cas having min(ta.cas)
 union
  select max(cas) as t1, null as t2, udalost, popis from leva_udalosti where
   udalost = @u and popis = @p
) as tx group by t1

tohle funguje. Mám pocit, že by to šlo zjednodušit, jen mne nenapadá jak.

hu

Nahlásit jako SPAM
IP: 195.178.67.–
Kit+11
Guru
26. 6. 2014   #5
-
0
-

#4 hlucheucho
Místo UNION použij UNION ALL. Je podstatně rychlejší.

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
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, 8 hostů

 

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