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
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 ...'
dawesy
Profil
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
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 *
Zkuste si dát do výpočtu výdeje sloupeček s výdejem místo prijem.

sklad.datum berete kde?
dawesy
Profil
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
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
stačilo LEFT JOIN..
Toto téma je uzamčeno. Odpověď nelze zaslat.