Autor | Zpráva | ||
---|---|---|---|
dawesy Profil |
Ahoj všichni, mám tabulky :
1) sklad (ic,kazeta,... ) 2) pohyby (id_ic,id_kazeta,id,pocet,datum,...) já bych potřeboval vypsat všechny kazety z tabulky 'sklad' pro zadané 'ic' a u každé vypsané kazety spočítat celkový příjem a výdej z tabulky 'pohyby' .. Můžete mi prosím poradit, jak nato ?? Díky za jakoukoliv snahu :) David Moderátor Chamurappi: Ten ohavný „pls“ v titulku si příště odpusť. Přesouvám do databází…
|
||
TomášK Profil |
#2 · Zasláno: 2. 6. 2009, 18:40:50
Patří to do kategorie databáze. Pokud tomu dobře rozumím, dvojice id_ic a id_kazeta z tabulky pohyby odkazuje na příslušný záznam v tabulce sklad? Pokud ano, zjednodušil bych to:
1, sklad(id, ic, kazeta) 2, pohyby(sklad_id, id, pocet, datum, ...) Dotaz by pak vypadal asi takto: SELECT sklad.ic, sklad.kazeta, SUM(pohyby.prijem) AS prijem SUM(pohyby.vydej) AS vydej FROM sklad JOIN pohyby ON sklad.id = pohyby.sklad_id WHERE ic = $zadane_ic GROUP BY sklad.id Pokud byste zachoval strukturu, jakou popisujete vy, pak musíte změnit vazbu - řádek 'JOIN pohyby ON ...' |
||
Časová prodleva: 3 dny
|
|||
dawesy Profil |
#3 · Zasláno: 5. 6. 2009, 11:10:09
Omlouvám se, až teď jsem si všiml, že je tu i kategorie databáze.. Každopádně díky a pls už nepíšu :-D David
|
||
dawesy Profil |
#4 · Zasláno: 5. 6. 2009, 12:20:17
No ještě jsem tu zpět, protože uvedený dotaz vrátí nesmyslný počet. Trochu jsem strukturu tabulky překopal, víc bohužel nemůžu.
sklad (ic,kazeta) sklad_pohyby (id_ic,id_kazeta,datum,prijem,vydej) SELECT sklad.ic, sklad.datum sklad.kazeta, SUM(sklad_pohyby.prijem) AS prijem SUM(sklad_pohyby.prijem) AS vydej FROM sklad JOIN sklad_pohyby ON sklad.ic = sklad_pohyby.id_ic WHERE ic = '$ic' AND MONTH(datum) = '$mesic' AND YEAR(datum) = '$rok' GROUP BY sklad.ic Mám tam někde chybu?? Fakt nevím |
||
Kajman_ Profil * |
#5 · Zasláno: 5. 6. 2009, 12:40:45
Zkuste si dát do výpočtu výdeje sloupeček s výdejem místo prijem.
sklad.datum berete kde? |
||
dawesy Profil |
#6 · Zasláno: 5. 6. 2009, 12:45:52 · Upravil/a: dawesy
No v přdchozím dotazu byl překlep SUM(sklad_pohyby.vydej) AS vydej
sklad (ic,kazeta,datum,cas,cena...) sklad_pohyby (id_ic,id_kazeta,datum,prijem,vydej) SELECT sklad.ic, sklad.kazeta, sklad_pohyby.datum, SUM(sklad_pohyby.prijem) AS prijem SUM(sklad_pohyby.vydej) AS vydej FROM sklad JOIN sklad_pohyby ON sklad.ic = sklad_pohyby.id_ic WHERE ic = '$ic' AND MONTH(sklad_pohyby.datum) = '$mesic' AND YEAR(sklad_pohyby.datum) = '$rok' GROUP BY sklad.ic Nevypíše žádný záznam :( Jsem v tom už dobře zamotaný |
||
dawesy Profil |
#7 · Zasláno: 5. 6. 2009, 13:21:26
Ani tak nic :(
SELECT sklad.ic, sklad.kazeta, sklad_pohyby.datum, SUM(sklad_pohyby.prijem) AS prijem, SUM(sklad_pohyby.vydej) AS vydej FROM sklad JOIN sklad_pohyby ON sklad.ic = sklad_pohyby.id_ic WHERE sklad.ic = '$ic' GROUP BY sklad.kazeta |
||
dawesy Profil |
#8 · Zasláno: 5. 6. 2009, 13:35:38
stačilo LEFT JOIN..
|
||
Časová prodleva: 15 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0