Autor Zpráva
BunnyBugs
Profil *
Zdravím, mám jeden dotaz.
Lítám tady po diskuzi už druhý den, ale žádná varianta ani pochopení nějak nepřišlo, mohu tedy poprosit o radu?

Mám tabulku 1 a tabulku 2, obě dvě mají pole (id, datum, nazev, prijem, vydej, atd...)
Teď bych potřeboval udělat výpis všech řádků z obou tabulek, které obsahují stejný parametr z pole název ... prostě mi zatím nic nefungovalo :(

Když to vypíšu dvouma dotazama, tak to funguje, ale zobrazí se mi nejdřív záznamy z tabulky 1 a pak z tabulky 2, ale já bych právě potřeboval, aby se to promíchalo do sebe, resp. seřadilo dle datumů bez ohledu na to, z které tabulky to je.

Za každou radu předem děkuji.
Tori
Profil
(SELECT sloupce FROM t1 WHERE sloupec = 'neco')
UNION
(SELECT sloupce FROM t2 WHERE sloupec = 'neco')
ORDER BY datum
Závorky okolo selectů jsou nutné. Pokud chcete použít řazení v některém dílčím dotazu, musí být spojené s LIMIT (jinak ho MySQL vzhledem k řazení celého výsledku ignoruje).
BunnyBugs
Profil *
Juuu, jak prosté, funguje :))) a já se to tady snažil všelijak spojovat a kombinovat, tohle mě nějak nenapadlo :(
Děkuji moc za rychlou odpověď :)
BunnyBugs
Profil *
Ještě malá prosbička, na součet sloupce to nějak nefunguje, nebo to má dotaz vypadat jinak?
Když použiji tento dotaz:

(SELECT SUM(`prijem`) AS 'celkem' FROM `t1`) UNION (SELECT SUM(`prijem`) AS 'celkem' FROM `t2`) UNION (SELECT SUM(`prijem`) AS 'celkem' FROM `t3`)

tak mi to vypíše součet pouze s t1. Co je tedy špatně?, nebo to na funkci SUM() musí vypadat jinak?
juriad
Profil
Ty bys především nikdy neměl chtít slučovat výsledky z několika tabulek.
Jak se líší t1 od t2 a t3? Jsou v nich trochu jiná data.
Proč nejsou všechny v jedné tabulce? Protože název tabulky souvisí s tím, jaká data obsahuje?
Raději vytvoř jedinou tabulku t s jedním sloupce navíc, který bude rozlišovat jednotlivé typy.

K tvému dotazu (s chybným schématem):
O jaký dotaz se snažíš, co má vrátit? Součet ze všech tabulek dohromady?
BunnyBugs
Profil *
No, nejde jen o názvy tabulek, ale každá tabulka má jiné sloupce, ale sloupce příjem a výdej mají všechny tři.
Nejde mi slučování tabulek, ale pouze jen o výpis celkové částky ze všech třech.

A ano, vím, že je to asi chybný dotaz, ale nevím, jak to sečíst, to je to, o co mi jde.
juriad
Profil
Ve vnitřním dotazu si sloučíš příjmy ze všech tabulek. A protože vnitřní dotaz musí být pojmenovaný, bude třeba t. A pak se k tomu chováš, jako by to byla obyčejná tabulka.
SELECT SUM(prijem) AS celkem
FROM   ((SELECT prijem
         FROM   t1)
        UNION
        (SELECT prijem
         FROM   t2)
        UNION
        (SELECT prijem
         FROM   t3)) t  
BunnyBugs
Profil *
Jojo, to je přesně ono :) ... mockrát díky :)
Kajman
Profil
Pozor, musí tam být union all, jinak to může vynechat příjmy z t2 a t3, které jsou stejné, jako nějaký předešlý.
BunnyBugs
Profil *
Kajman:
Tak jsem si dělal zpětnou kontrolu nápovědy od juriad a pořád mi to nevycházelo.
Po přidání ALL za UNION je to v naprostém pořádku, takže díky moc ... jsem ten dotaz předělával snad milionkrát, abych našel chybu a pořád nic, ale takhle už je to v pohodě :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: