abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
včera 21:21 | Nová verze Ladislav Hagara | Komentářů: 0
včera 11:44 | Zajímavý projekt

Na Indiegogo byla spuštěna kampaň na podporu herní mini konzole a multimediálního centra RetroEngine Sigma od Doyodo. Předobjednat ji lze již od 49 dolarů. Požadovaná částka 20 000 dolarů byla překonána již 6 krát. Majitelé mini konzole si budou moci zahrát hry pro Atari VCS 2600, Sega Genesis nebo NES. Předinstalováno bude multimediální centrum Kodi.

Ladislav Hagara | Komentářů: 0
včera 00:10 | Nová verze

Byla vydána verze 4.7 redakčního systému WordPress. Kódové označením Vaughan bylo vybráno na počest americké jazzové zpěvačky Sarah "Sassy" Vaughan. Z novinek lze zmínit například novou výchozí šablonu Twenty Seventeen, náhledy pdf souborů nebo WordPress REST API.

Ladislav Hagara | Komentářů: 1
6.12. 12:00 | Zajímavý projekt

Projekt Termbox umožňuje vyzkoušet si linuxové distribuce Ubuntu, Debian, Fedora, CentOS a Arch Linux ve webovém prohlížeči. Řešení je postaveno na projektu HyperContainer. Podrobnosti v často kladených dotazech (FAQ). Zdrojové kódy jsou k dispozici na GitHubu [reddit].

Ladislav Hagara | Komentářů: 24
6.12. 11:00 | Bezpečnostní upozornění

Byly zveřejněny informace o bezpečnostní chybě CVE-2016-8655 v Linuxu zneužitelné k lokální eskalaci práv. Chyba se dostala do linuxového jádra v srpnu 2011. V upstreamu byla opravena minulý týden [Hacker News].

Ladislav Hagara | Komentářů: 2
5.12. 22:00 | Komunita

Přibližně před měsícem bylo oznámeno, že linuxová distribuce SUSE Linux Enterprise Server (SLES) běží nově také Raspberry Pi 3 (dokumentace). Obraz verze 12 SP2 pro Raspberry Pi 3 je ke stažení zdarma. Pro registrované jsou po dobu jednoho roku zdarma také aktualizace. Dnes bylo oznámeno, že pro Raspberry Pi 3 je k dispozici také nové openSUSE Leap 42.2 (zprávička). K dispozici je hned několik obrazů.

Ladislav Hagara | Komentářů: 6
5.12. 06:00 | Zajímavý software

OMG! Ubuntu! představuje emulátor terminálu Hyper (GitHub) postavený na webových technologiích (HTML, CSS a JavaScript). V diskusi k článku je zmíněn podobný emulátor terminálu Black Screen. Hyper i Black Screen používají framework Electron, stejně jako editor Atom nebo vývojové prostředí Visual Studio Code.

Ladislav Hagara | Komentářů: 50
5.12. 06:00 | Zajímavý článek

I letos vychází řada ajťáckých adventních kalendářů. QEMU Advent Calendar 2016 přináší každý den nový obraz disku pro QEMU. Programátoři se mohou potrápit při řešení úloh z kalendáře Advent of Code 2016. Kalendáře Perl Advent Calendar 2016 a Perl 6 Advent Calendar přinášejí každý den zajímavé informace o programovacím jazyce Perl. Stranou nezůstává ani programovací jazyk Go.

Ladislav Hagara | Komentářů: 10
3.12. 16:24 | Nová verze

Byla vydána Mageia 5.1. Jedná se o první opravné vydání verze 5, jež vyšla v červnu loňského roku (zprávička). Uživatelům verze 5 nepřináší opravné vydání nic nového, samozřejmě pokud pravidelně aktualizují. Vydání obsahuje všechny aktualizace za posledního téměř půldruhého roku. Mageia 5.1 obsahuje LibreOffice 4.4.7, Linux 4.4.32, KDE4 4.14.5 nebo GNOME 3.14.3.

Ladislav Hagara | Komentářů: 17
3.12. 13:42 | Pozvánky

V Praze probíhá konference Internet a Technologie 16.2, volné pokračování jarní konference sdružení CZ.NIC. Konferenci lze sledovat online na YouTube. K dispozici je také archiv předchozích konferencí.

Ladislav Hagara | Komentářů: 0
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (8%)
 (5%)
 (3%)
Celkem 785 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

Dotaz: sql problem

b42 avatar 11.12.2006 21:40 b42 | skóre: 12 | Ostrava/Brno
sql problem
Přečteno: 110×
zdravim,

mam 3 tabulky, obsahujici nasledujici kolonky:
users - user_id
payment - user_id, payment_id, amount
demand - user_id, demand_id, amount
chtel bych vypsat u uzivatele soucet jeho pohledavek a jeho plateb, muj dotaz vypada takto a vypisuje hodnoty, podle kterych to vypada ze tam nekde vznika nejaky kartezsky soucin:
SELECT u.user_id, SUM(dm.amount), SUM(p.amount)
FROM users u
LEFT JOIN payment p ON p.user_id = u.user_id
LEFT JOIN demand dm ON dm.user_id = u.user_id
WHERE dm.cancel_date IS NULL AND p.cancel_date IS NULL AND u.user_id = 1205
GROUP BY u.user_id

+---------+----------------+---------------+
| user_id | SUM(dm.amount) | SUM(p.amount) |
+---------+----------------+---------------+
|    1205 |        2000.00 |       1084.00 | 
+---------+----------------+---------------+
(spravne to ma byt 1000 a 542 - v demand jsou pro tohoto uzivatele castky 500 a 500, v payment 500 a 42)

kdyz vyhazu tu agregaci vypada to asi takhle:
SELECT u.user_id, dm.amount, p.amount, dm.demand_id, p.payment_id
FROM users u
LEFT JOIN payment p ON p.user_id = u.user_id
LEFT JOIN demand dm ON dm.user_id = u.user_id
WHERE dm.cancel_date IS NULL AND p.cancel_date IS NULL AND u.user_id = 1205

+---------+--------+--------+-----------+------------+
| user_id | amount | amount | demand_id | payment_id |
+---------+--------+--------+-----------+------------+
|    1205 | 500.00 |  42.00 |         4 |          7 | 
|    1205 | 500.00 |  42.00 |        11 |          7 | 
|    1205 | 500.00 | 500.00 |         4 |         11 | 
|    1205 | 500.00 | 500.00 |        11 |         11 | 
+---------+--------+--------+-----------+------------+
otazka zni: jak by mel vypadat dotaz, ktery vypise to co chci? (pro vice uzivatelu, ta podminka user_id = 1205 je tam jen pro demonstraci)

Odpovědi

11.12.2006 22:44 jekub | skóre: 8 | blog: noblog
Rozbalit Rozbalit vše Re: sql problem
otazka zni: jak by mel vypadat dotaz, ktery vypise to co chci? (pro vice uzivatelu, ta podminka user_id = 1205 je tam jen pro demonstraci)

Já bych si raděj položil otázku, proč dostávám výsledek, jaký dostávám. Třeba proto, že: spojením users a demand dostanu
USER_ID                AMOUNT                 
---------------------- ---------------------- 
1205                   500                    
1205                   500                    
spojením výsledné tabulky s payment relací jen přes user_id dostanu kartézský součín (2 x 2 = 4 řádky)
USER_ID                AMOUNT                 AMOUNT                 
---------------------- ---------------------- ---------------------- 
1205                   500                    42                     
1205                   500                    500                    
1205                   500                    42                     
1205                   500                    500                    

no a agregace pak dá výsledky 2000 a 1084. Těžko očekávat očekávané výsledky spojení tabulek (payment a demand), které nejsou v relaci.

Možné řešení
select user_id,sum(amount1),sum(amount2) from(
SELECT u.user_id, dm.amount amount1, 0 amount2
FROM users u
LEFT JOIN demand dm ON dm.user_id = u.user_id
union
SELECT u.user_id, 0, p.amount
FROM users u
LEFT JOIN payment p ON p.user_id = u.user_id
)
GROUP BY user_id
b42 avatar 11.12.2006 22:57 b42 | skóre: 12 | Ostrava/Brno
Rozbalit Rozbalit vše Re: sql problem
Diky za odpoved.

Proc dostavam vysledek jaky dostavam jsem celkem tusil, nicmene nevedel jsem co s tim. Vypadalo to jako trivialni ucebnicovy priklad, takze jsem myslel ze to pujde vyresit nejak trivialne ... jakozto uzivatel mysql se subselecty neumim pracovat:) (no dobre, neumim prakticky nic a mysql za to nemuze)

Jinak asi by tam melo byt UNION ALL (v mysql, nevim jestli i jinde) pro pripad, ze se vyskytnou dve stejne castky.
11.12.2006 23:07 jekub | skóre: 8 | blog: noblog
Rozbalit Rozbalit vše Re: sql problem
Union all, přesně tak. Ještě jsem kvůli tomu zapínal počítač, abych to napravil :-)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.