ďťż
 
[firebird2] ma problem z pewnym select 'em ďťż
 
[firebird2] ma problem z pewnym select 'em
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[firebird2] ma problem z pewnym select 'em



Art.R - 04-07-2007 00:01
[firebird2] ma problem z pewnym select 'em
  witam,
mam problem z pewnym zapytaniem (select)
w bazie na firebird-2. Chcę wyciągnąć
z tabeli PRZYCHOD_POZ i ROZCHOD_POZ
listę magazynów, nazwę produktów oraz
ilość produktów które się tam znajdują, czyli coś
w rodzaju:
....SUM(PRZYCHOD_POZ. ILOSC- ROZCHOD_POZ. ILOSC)...

Mam następujące tabele:

CREATE TABLE PRZYCHOD_POZ (
ID NUMERIC(15,0) NOT NULL,
ID_PRZYCHODU INTEGER,
ID_MAGAZYNU INTEGER,
ID_PRODUKTU INTEGER,
ILOSC NUMERIC(9,2),
NAZWA_PROD VARCHAR(64),
NAZWA_MAGAZYNU VARCHAR(64))
oraz:
CREATE TABLE ROZCHOD_POZ (
ID NUMERIC(15,0) NOT NULL,
ID_PRZYCHODU INTEGER,
ID_PRZYCHODUPOZ NUMERIC(15,0),
ID_MAGAZYNU INTEGER,
ID_PRODUKTU INTEGER,
ILOSC NUMERIC(9,2),
NAZWA_PROD VARCHAR(64),
NAZWA_MAGAZYNU VARCHAR(64))

....tutaj, tak jak pisałem powyżej należało by odjąć
ilość z tabeli rozchód od ilości z tabeli przychód.
id_produktu chciałbym wprowadzać sam np:
id_produktu=12 . Na tej podstawi wyświetlałaby
mi się lista magazynów wraz z ilością znajdujący
się w nich produktów z id_produktu=12

z góry dzięki za pomoc (siedzę nad tym już dwa dni)

poz., Art.r

----------------------------------------------------------------------
Pochwal sie innym, jak mieszkasz!
>>> http://link.interia.pl/f1abe

--
Archiwum grupy: http://niusy.onet.pl/pl.comp.bazy-danych





Marcin Miga - 05-07-2007 00:00

  Dwie propozycje na szybko:
1. SELECT z dwóch podselectów zagregowanych połączonych pomiędzy sobą
po magazynie i produkcie. Ale nie wiem, czy FB/IB dopuszcza
podselecty. Cos w ten deseń:
SELECT p.magazyn, p.produkt, przychod-rozchod FROM (SELECT magazyn,
produkt, SUM(ilosc) As przychod FROM przychody GROUP BY magazyn,
produkt) As p JOIN (SELECT magazyn, produkt, SUM(ilosc) As rozchod
FROM rozchody GROUP BY magazyn, produkt) As r ON r.magazyn=p.magazyn
AND r.produkt = p.produkt

2. SELECT 'w drugą stronę' z wyróżnikiem lub odwrotnymi sumami...:)
Czyli:
SELECT magazyn, produkt, SUM(ilosc) As przychod FROM przychody GROUP
BY magazyn, produkt
UNION ALL
SELECT magazyn, produkt, -SUM(ilosc) FROM rozchody GROUP BY magazyn,
produkt

i na tym zrobiona agregacja.

pozdrawiaMM




Art.R - 05-07-2007 00:01

  > Dwie propozycje na szybko:
> 1. SELECT z dwóch podselectów zagregowanych połączonych pomiędzy sobą
> po magazynie i produkcie. Ale nie wiem, czy FB/IB dopuszcza
> podselecty.
.......
FireBird 1,5 nie dopuszcza, dlatego jak na zbawienie czekałem na FireBird
2,0
tylko że po przeniesieniu bazy (FireBird 1,5) na inny komputer na którym
jest zainstalowany FireBird 2,0 coś się porobiło z polskimi znakami (w
czasie
testów nic takiego się nie działo...)
.......
>Cos w ten deseń:
> SELECT p.magazyn, p.produkt, przychod-rozchod FROM (SELECT magazyn,
> produkt, SUM(ilosc) As przychod FROM przychody GROUP BY magazyn,
> produkt) As p JOIN (SELECT magazyn, produkt, SUM(ilosc) As rozchod
> FROM rozchody GROUP BY magazyn, produkt) As r ON r.magazyn=p.magazyn
> AND r.produkt = p.produkt
.......
ten przykład (pow..) podał mi poprawne wyniki ale nie wszystkie które mnie
interesowały,
przypuszczam, że dzieje się tak dlatego ponieważ te magazyny są na produkcji
i czasami
jakiś produkt zmienia nazwę (również id, itd...), może być po stronie
rozchodu a po stronie
przychodu może być coś innego.
.......
> 2. SELECT 'w drugą stronę' z wyróżnikiem lub odwrotnymi sumami... :)
> Czyli:
> SELECT magazyn, produkt, SUM(ilosc) As przychod FROM przychody GROUP
> BY magazyn, produkt
> UNION ALL
> SELECT magazyn, produkt, -SUM(ilosc) FROM rozchody GROUP BY magazyn,
> produkt
>
......
ten drugi przykład to prawie to o co mi chodziło, ostatecznie wyglądało to w
ten sposób:

SELECT nazwa, NAZWA_PROD, SUM(przychod) As ILOSC from
(SELECT nazwa, NAZWA_PROD, SUM(ilosc) As przychod FROM przychodpoz GROUP
BY nazwa, NAZWA_PROD
UNION ALL
SELECT nazwa, NAZWA_PROD, -SUM(ilosc) FROM rozchodpoz GROUP BY nazwa,
NAZWA_PROD) group by nazwa, NAZWA_PROD

pozdrawiam i wielkie dzięki,
bez pomocy chyba bym nie ruszył
Art.R

----------------------------------------------------------------------
Bedzie skandal?
T-shirty polityczne >> http://link.interia.pl/f1ac7

--
Archiwum grupy: http://niusy.onet.pl/pl.comp.bazy-danych




jh - 06-07-2007 00:03

  Użytkownik "Art.R" <Art.Ryp@poczta.fm> napisał w wiadomości
news:002301c7be59$80ab5f70$8c00000a@ppp1...
> FireBird 1,5 nie dopuszcza, dlatego jak na zbawienie czekałem na FireBird
> 2,0
> tylko że po przeniesieniu bazy (FireBird 1,5) na inny komputer na którym
> jest zainstalowany FireBird 2,0 coś się porobiło z polskimi znakami (w
> czasie
> testów nic takiego się nie działo...)

Przenosiłeś przez backup? Czy po prostu kopiując plik? Ja przeniosłem robiąc
backup w 1.5 i restore w 2 i działa.

Jacek





Art.R - 06-07-2007 00:03

  > Użytkownik "Art.R" <Art.Ryp@poczta.fm> napisał w wiadomości
> news:002301c7be59$80ab5f70$8c00000a@ppp1...
>> FireBird 1,5 nie dopuszcza, dlatego jak na zbawienie czekałem na FireBird
>> 2,0
>> tylko że po przeniesieniu bazy (FireBird 1,5) na inny komputer na którym
>> jest zainstalowany FireBird 2,0 coś się porobiło z polskimi znakami (w
>> czasie
>> testów nic takiego się nie działo...)
>
> Przenosiłeś przez backup? Czy po prostu kopiując plik? Ja przeniosłem
> robiąc backup w 1.5 i restore w 2 i działa.
>
> Jacek

właściwie to od instalowałem FB 1.5 i zainstalowałem FB 2, nic złego
się nie stało więc wymyśliłem sobie, że jak przeniosę ten plik
na inny komputer to też będzie dobrze.. Teraz jest trochę za późno,
ale w sumie poprawiłem te dane w tabelach produkty, adresy itd..
potem zrobiłem pętle żeby poprawił dane tam gdzie było po
kilkanaście tyś. rekordów i jest ok.
....pozostaje problem robienia kopii zapasowych tej bazy, wcześniej
ktoś po prostu kopiował plik na inny komputer. IB Expert'a raczej
nie zainstaluję, więc może zrobić to przy pomocy CMD i Zaplanowane
zadania...
Nie wiem czy taki fragment kodu wystarczy:

"gbak.exe -b -user sysdba -pass masterkey D:\magazyn\baza\MAGAZYN01.FDB
D:\kopia_bazy\MAGAZYN01.FBK"

W IB Expert są jakieś dodatkowe parametry, ma może ktoś jakieś dośwadczenia
z tym..?

Pozdrawiam i z góry dzięki za jakieś sugestje, Art.R

-----------------R--E--K--L--A--M--A-----------------
Lepsze wiadomosci z kraju i z zagranicy.
Nie wierzysz? Sprawdz - http://wiadomosci.interia.pl/

--
Archiwum grupy: http://niusy.onet.pl/pl.comp.bazy-danych




jh - 07-07-2007 00:02

  Użytkownik "Art.R" <Art.Ryp@poczta.fm> napisał w wiadomości
news:002501c7bf25$42661530$8c00000a@ppp1...
> właściwie to od instalowałem FB 1.5 i zainstalowałem FB 2, nic złego się
> nie stało więc wymyśliłem sobie, że jak przeniosę ten plik
> na inny komputer to też będzie dobrze..

Teoretycznie zadziała, ale 2 ma nieco zmian w tabelach systemowych, dlatego
IMHO powinieneś zrobić tak, jak napisałem.

> ...pozostaje problem robienia kopii zapasowych tej bazy, wcześniej ktoś po
> prostu kopiował plik na inny komputer. może zrobić to przy pomocy CMD i
> Zaplanowane zadania...

Dokładnie. Ja napisałem sobie programik, który robi backup/restore. Wrzucony
do Zaplanowanych zadań odpala mi codzienne backupy. Przyznam, że w FB
brakuje przyrostowych backupów, na pewno byłoby wygodniej i szybciej przy
większych bazach.

> Nie wiem czy taki fragment kodu wystarczy:
> "gbak.exe -b -user sysdba -pass masterkey D:\magazyn\baza\MAGAZYN01.FDB
> D:\kopia_bazy\MAGAZYN01.FBK"

Robiłem np. tak w backup.cmd:

set DBPATH="C:\DB"
set DBFILE="C:\DB\KONKURSY.FDB"
set DBBAK="C:\DB\KONKURSY.FBK"
set GBAK="c:\Program Files\Firebird\Firebird_1_5\bin\gbak.exe"
@echo off
if not Exist %GBAK% (
echo Przeinstaluj Firebird i Konkursy
goto Finish
)
:Process
title Konkursy - Firebird Backup
echo -------------------------------------
echo Witaj w Konkursy - Firebird Backup
echo -------------------------------------
if ErrorLevel 7 goto Finish
if not Exist %DBFILE% (
echo DB File %DBFILE% nie istnieje
goto Finish
)
dir %DBFILE% /4 /w
echo Backup %DBFILE% - start o %time%
%GBAK% -b -user SYSDBA -pas masterkey localhost:%DBFILE% %DBBAK%
if ErrorLevel 1 (
echo Backup Error!
goto Finish
)
echo Backup %DBFILE% - koniec o %time%
dir %DBBAK% /4 /w
echo -----------------------------
echo Milego dnia!
:Finish
set GBAK=
set DBPATH=
set DBFILE=
set DBBAK=
echo -----------------------------
echo.
@echo ON

Jacek
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?= mysql i mysql-front, problem String line; if (line=="cos"){...}....problem Problemy z =?ISO-8859-2?Q?instalacj=B1_PostgreSQL_na_syste?==?ISO-8859-2?Q?mach_Windows?= [postgres] Problem z =?ISO-8859-2?Q?zmian=B1_struktury_i_z?==?ISO-8859-2?Q?ale=BFno=B6ciami=2E?= [oracle] =?ISO-8859-2?Q?zmia=BFd=BFony_przez_problem=3A_za?==?ISO-8859-2?Q?pytanie_do_hierarchi?= Problem z wartościami w MySQL :( [ MySQL and ASP and VBScript ] [PGSQL] czy ktos mial problemy z initdb pgsql 8.1 ? [MySQL] Problem z zapisem danych w bazie danych Problem z mysql - can't connect to MySQL/nietypowo...
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • quentinho.opx.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com