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í
×
dnes 06:00 | Nová verze

Po necelém roce od vydání verze 0.67 byla vydána verze 0.68 populárního telnet a ssh klienta PuTTY. Podrobnosti v přehledu změn. Řešeny jsou také bezpečnostní chyby.

Ladislav Hagara | Komentářů: 0
včera 21:32 | Nasazení Linuxu

Canonical představuje nejnovější verzi chytré helmy DAQRI s Ubuntu pro rozšířenou realitu. K vidění bude příští týden v Barceloně na veletrhu Mobile World Congress 2017.

Ladislav Hagara | Komentářů: 0
včera 21:31 | Pozvánky

Pro zájemce o hlubší znalosti fungování operačních systémů připravila MFF UK nový předmět Pokročilé operační systémy, v rámci něhož se vystřídají přednášející nejen z řad pracovníků fakulty, ale dorazí také odborníci ze společností AVAST, Oracle, Red Hat a SUSE. Tento předmět volně navazuje na kurz Operační systémy ze zimního semestru, ale pokud máte praktické zkušenosti odjinud (například z přispívání do jádra Linuxu) a chcete si

… více »
Martin Děcký | Komentářů: 2
včera 21:30 | Pozvánky

Czech JBoss User Group Vás srdečně zve na setkání JBUG v Brně, které se koná ve středu 1. března 2017 v prostorách Fakulty Informatiky Masarykovy Univerzity v místnosti A318 od 18:00. Přednáší Tomáš Remeš a Matěj Novotný na téma CDI 2.0 - New and Noteworthy. Více informací na Facebooku a na Twitteru #jbugcz.

mjedlick | Komentářů: 0
20.2. 23:45 | Zajímavý software

Na blogu Qt bylo představeno Qt 3D Studio. Jedná se o produkt dosud známý pod názvem NVIDIA DRIVE™ Design Studio. NVIDIA jej věnovala Qt. Jedná se o několik set tisíc řádků zdrojového kódu. Qt 3D Studio bude stejně jako Qt k dispozici jak pod open source, tak pod komerční licencí. Ukázka práce s Qt 3D Studiem na YouTube.

Ladislav Hagara | Komentářů: 10
20.2. 17:50 | Komunita

Nadace The Document Foundation (TDF) zastřešující vývoj svobodného kancelářského balíku LibreOffice slaví 5 let od svého oficiálního vzniku. Nadace byla představena 28. září 2010. Formálně byla založena ale až 17. února 2012.

Ladislav Hagara | Komentářů: 0
20.2. 12:50 | Komunita

Mozilla.cz informuje, že dosud experimentální funkce Page Shot z programu Firefox Test Pilot (zprávička) se stane součástí Firefoxu. Page Shot je nástroj pro vytváření snímků webových stránek. Umí výběr oblasti, prvku stránky (např. odstavce), nebo uložení snímku celé stránky. Snímky lze ukládat na disk nebo nahrávat na server Mozilly. Nedávno bylo oznámeno, že se součástí Firefoxu stane Activity Stream.

Ladislav Hagara | Komentářů: 32
20.2. 04:10 | Nová verze

Po 10 týdnech vývoje od vydání Linuxu 4.9 (zprávička) oznámil Linus Torvalds, mj. již 20 let žijící v USA, vydání Linuxu 4.10 (LKML). Přehled nových vlastností a vylepšení například na Kernel Newbies a v Jaderných novinách (1, 2 a 3). Kódové jméno Linuxu 4.10 je Fearless Coyote.

Ladislav Hagara | Komentářů: 24
19.2. 15:55 | Zajímavý projekt

Vyzkoušet si příkazy a vyřešit několik úkolů lze na stránkách Commandline Challenge (CMD Challenge). Úkoly lze řešit různými způsoby, důležitý je výsledek. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.

Ladislav Hagara | Komentářů: 18
18.2. 17:35 | Bezpečnostní upozornění

Německá Bundesnetzagentur (obdoba českého ČTU) zakázala na německém území prodej panenky Cayla kvůli „špionáži“ dětí. Tato elektronická hračka obsahuje mikrofon, reproduktor a kameru a bezdrátové komunikační rozhraní, pomocí kterého se hračka připojuje na servery výrobce. Takovýmto způsobem může hračka pomocí umělé inteligence „odpovídat“ na dotazy dítěte. Hlavní problém bude ale asi někde jinde, podle prvotních zpráv může

… více »
Petr Tomášek | Komentářů: 34
Jak se stavíte k trendu ztenčování přenosných zařízení (smartphony, notebooky)?
 (14%)
 (2%)
 (71%)
 (3%)
 (10%)
Celkem 680 hlasů
 Komentářů: 61, poslední včera 13:06
Rozcestník

Dotaz: sql problem

b42 avatar 11.12.2006 21:40 b42 | skóre: 12 | Ostrava/Brno
sql problem
Přečteno: 113×
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.