Query in sql

Status
Niet open voor verdere reacties.

wuzzynl

Nieuwe gebruiker
Lid geworden
9 jan 2009
Berichten
2
Hoi

Ik ben bezig met factuur gegevens van een zelfgemaakte programma over te zetten naar Exact. In SQL plus ben ik nu bezig om aan de hand van een query de gegevens op een gesorteerd manier te exporteren naar een .csv file. Ik heb nu 2 tabellen facturen en factuurregels.

Code:
create table factuurregels
(
regelnr Number(38),
boekstuknr Number(38),
Datum Varchar2(10),
Grootboekrek Number(38),
Bedrag Number(7,2),
BTW Number(7,2),
Omschr Varchar2(50),
btwcode Number(38),
status Number(1)
);


create table facturen
(
regelnr varchar(6),
soortdagboek varchar2(1),
dagboeknr number(38),
boekjaar varchar2(2),
periode number(38),
boekstuknr number(38),
boekingsdatum varchar2(10),
debnr number(38),
bedrag number(7,2)
);

Deze tabellen heb ik samengevoegd in een aparta tabel.
Code:
create table ophalenfac
(
regel varchar2(240)
);


insert into ophalenfac
select
to_char(f.regelnr)||CHR(59)||
to_char(f.soortdagboek)||CHR(59)||
to_char(f.dagboeknr)||CHR(59)||
to_char(f.boekjaar)||CHR(59)||
to_char(f.periode)||CHR(59)||
to_char(f.boekstuknr)||CHR(59)||
to_char(f.boekingsdatum)||CHR(59)||
to_char(f.debnr)||CHR(59)||
to_char(f.bedrag)||CHR(59)||
to_char(r.regelnr)||CHR(59)||
to_char(r.datum)||CHR(59)||
to_char(r.grootboekrek)||CHR(59)||
to_char(r.bedrag)||CHR(59)||
to_char(r.btw)||CHR(59)||
to_char(r.omschr)||CHR(59)||
to_char(r.btwcode)||CHR(59)||
to_char(r.boekstuknr)||CHR(10)
from facturen f, factuurregels r where f.boekstuknr = r.boekstuknr and r.status=0;
Als ik deze tabel exporteer dan krijg ik dit:


Code:
{0};V;70;08;1;4012001;03-01-2008;1010;4760;1;03-01-2008;8510;1190;190;Definitiestudie;4;4012001
{0};V;70;08;1;4012001;03-01-2008;1010;4760;2;03-01-2008;8510;1190;190;Basisontwerp;4;4012001
{0};V;70;08;1;4012001;03-01-2008;1010;4760;3;03-01-2008;8510;1190;190;Detailontwerp;4;4012001
{0};V;70;08;1;4012001;03-01-2008;1010;4760;4;03-01-2008;8510;1190;190;Realisatie;4;4012001
{0};V;70;08;1;4012002;03-01-2008;1010;4760;1;03-01-2008;8510;1190;190;Definitiestudie;4;4012002
{0};V;70;08;1;4012002;03-01-2008;1010;4760;2;03-01-2008;8510;1190;190;Basisontwerp;4;4012002
{0};V;70;08;1;4012002;03-01-2008;1010;4760;3;03-01-2008;8510;1190;190;Detailontwerp;4;4012002
{0};V;70;08;1;4012002;03-01-2008;1010;4760;4;03-01-2008;8510;1190;190;Realisatie;4;4012002
{0};V;70;08;1;4012003;03-01-2008;1010;3570;1;03-01-2008;8510;1190;190;Definitiestudie;4;4012003
{0};V;70;08;1;4012003;03-01-2008;1010;3570;2;03-01-2008;8510;1190;190;Basisontwerp;4;4012003
{0};V;70;08;1;4012003;03-01-2008;1010;3570;3;03-01-2008;8510;1190;190;Detailontwerp;4;4012003
{0};V;70;08;1;4012004;03-01-2008;1010;1190;1;03-01-2008;8510;1190;190;Definitiestudie;4;4012004
{0};V;70;08;1;4012005;03-01-2008;1010;1190;1;03-01-2008;8510;1190;190;Definitiestudie;4;4012005

Wat ik eigenlijk wil is dat het ongeveer zoiets moet zien.

Code:
{0};0;V;70;2002;1;4012001;03-01-2008;1010;4760;
1;03-01-2002;8510;1190;190;Definitiestudie;4;4012001; 
2;03-01-2002;8510;1190;190;Basisontwerp;4;4012001;                                                                                                                                                                
3;03-01-2002;8510;1190;190;Detailontwerp;4;4012001;                                                                                                                                                               
4;03-01-2002;8510;1190;190;Realisatie;4;4012001;                                                                                                                                                                  
{0};0;V;70;2008;1;4012002;03-01-2008;1010;4760;
1;03-01-2002;8510;1190;190;Definitiestudie;4;4012002;                                                                                                                                                             
2;03-01-2002;8510;1190;190;Basisontwerp;4;4012002;                                                                                                                                                                
3;03-01-2002;8510;1190;190;Detailontwerp;4;4012002;                                                                                                                                                               
4;03-01-2002;8510;1190;190;Realisatie;4;4012002;                                                                                                                                                                  
{0};0;V;70;2008;1;4012003;03-01-2008;1010;3570;
1;03-01-2002;8510;1190;190;Definitiestudie;4;4012003;                                                                                                                                                             
2;03-01-2002;8510;1190;190;Basisontwerp;4;4012003;                                                                                                                                                             
3;03-01-2002;8510;1190;190;Detailontwerp;4;4012003;                                                                                                                                                               
{0};0;V;70;2008;1;4012005;03-01-2008;1010;1190;
1;03-01-2002;8510;1190;190;Definitiestudie;4;4012005;                                                                                                                                                             
{0};0;V;70;2008;1;4012006;03-01-2008;1010;1190;
1;03-01-2002;8510;1190;190;Definitiestudie;4;4012006;                                                                                                                                                             
{0};0;V;70;2008;1;4012007;03-01-2008;1010;1190;
1;03-01-2002;8510;1190;190;Definitiestudie;4;4012007;

Dus het factuurgegevens en daarbij horende regels. Van een kennis heb ik tehoren gekregen dat ik daarvoor een query moest maken, maar ik ben niet een master in query's. Wie kan me helpen?

Alvast bedankt.
 
Laatst bewerkt door een moderator:
Als ik het goed begrijp wil per factuur de factuur regels zien?
Dan heb je de samengestelde tabel niet nodig.
Als je de 2 tabellen gebruikt met een Vreemde sleutel naar een Primaire sleutel dan heb je al een relationele database systeem.
Wat je zou kunnen doen is een query maken waarbij je de 2 tabellen gwn joined aan de hand van de connectie(vreemde sleutel = primaire sleutel)
 
Je kunt ervoor kiezen om je doeltabel dmv een loop te laten vullen:
Code:
Declare TempCurr Cursor

For Select BoekstuknrFrom Facturen)

Open TempCurr
Fetch Next from tempCurr
Into @TEMPCURR
WHILE @@FETCH_STATUS = 0
BEGIN

Set @Exec = '
insert into ophalenfac
select
to_char(f.regelnr)||CHR(59)||
to_char(f.soortdagboek)||CHR(59)||
to_char(f.dagboeknr)||CHR(59)||
to_char(f.boekjaar)||CHR(59)||
to_char(f.periode)||CHR(59)||
to_char(f.boekstuknr)||CHR(59)||
to_char(f.boekingsdatum)||CHR(59)||
to_char(f.debnr)||CHR(59)||
to_char(f.bedrag)||CHR(59)
from facturen f
Where f.boekstuknr = '''+@TEMPCURR+'''
Union all
Select
to_char(r.regelnr)||CHR(59)||
to_char(r.datum)||CHR(59)||
to_char(r.grootboekrek)||CHR(59)||
to_char(r.bedrag)||CHR(59)||
to_char(r.btw)||CHR(59)||
to_char(r.omschr)||CHR(59)||
to_char(r.btwcode)||CHR(59)||
to_char(r.boekstuknr)||CHR(10)
factuurregels r
Where r.boekstuknr = '''+@TEMPCURR+'''
'
Exec (@Exec)

 FETCH NEXT FROM TEMPCURR
INTO @TEMPCURR
PRint @TEMPCURR
END

CLOSE TEMPCURR
DEALLOCATE TEMPCURR
 
Laatst bewerkt door een moderator:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan