Prikazi cijelu temu 03.01.2013 17:46
zidar Van mreze
Moderator
Registrovan od:03.02.2009
Lokacija:-


Predmet:Re: Pomoć oko upita
U stvari, ceo upit moze da se napise malo razgovetnije, po delovima pa ce se greska lakse pronaci:
[sql]
; WITH OtpremniceSaKolicinomVecomOdNule AS
(
-- ovde se listaju samo one otpremnice koje imaju stavke
-- i ukupna kolicina svih stavki je veca od nule
SELECT id_dokumenta, Kolicina = SUM(kolicina_promenenr)
FROM UZ_dokument_Stavka
HAVING SUM(kolicina_promenenr)>0
)
, OtpremniceZaKojeTrebaRacun AS
(
-- Za otpremnice koje imaju stavke i kolicine vece od nule
-- dodajemo ostale podatke iz tabele uz_DokuMent
SELECT
m.id_dokumenta
, m.id_vd
, m.poslovni_partner#_kd
, m.poslovni_partner#_pk
, m.organizaciona_jedinica#_real
, m.poslovni_partner#_ot
, m.godina
, m.datum_isporuke
, m.id_relacije
, v.Kolicina
FROM uz_DokuMent AS m
JOIN OtpremniceSaKolicinomVecomOdNule AS V ON V.id_dokumenta = m.id_dokumenta
)
-- Otpremnice bez racuna:
-- OtpremniceZaKojeTrebaRacun a koje nemamo u Prod_fakturIsAn_DokuMent
SELECT
m.*
FROM OtpremniceZaKojeTrebaRacun AS m
LEFT JOIN Prod_fakturIsAn_DokuMent p ON m.id_dokumenta = p.id_dokumenta
WHERE p.id_dokumenta IS NULL
;
[\sql]

Prvi segment u WITH, pronalazi one otpremnice koje imaju neke kolicine, direktno iz tabele Stavke.
U drugom segmentu dodajemo opis otpremnice, iz tabele otpremnice. Na kraju, drugi segment poredimo sa tebelom Fakture. To je logika. WHERE uslove treba dodati sto ranije, u prvi ili drugi segmet.

Prvi segment se moze napisati malo slozenije, JOIN sa Otpremnice, pa se tu doda WHERE datumOtpremnice BETWEEN...

Usput, na koji nacin da ubacim SQL text u poruku, i da izgleda kao SQL? Probao sam sa .., ali to nije to, dodaje mi brojeve linija.