Avatar billede jennemaan Nybegynder
27. september 2001 - 10:45 Der er 8 kommentarer og
1 løsning

Lidt tricky view/stored proc - hvordan?

Hey folks,

Jeg har følgende problematik;

Jeg har 2 tabeller, en primær og en relateret.

Hvordan laver jeg enklest og bedst et view/og -eller en stored procedure der kan gøre følgende:

Antaget at tabellerne ser således ud;

pri:

id atext
1  xxx
2  xxx
3  xxx
4  xxx

rel:

codeid id code
1      1  a
2      1  c
3      1  g
4      2  c
5      3  a
6      3  g
7      3  c

Så skal viewer/og -eller stored proceduren returnere et recordset med følgende layout:

id atext code
1  xxx  acg
2  xxx  c
3  xxx  agc
4  xxx

Jeg ved godt at jeg kan lave en innerjoin og få et recordset med

id atext code
1  xxx  a
1  xxx  c
.
etc. - men det er ikke det jeg skal bruge.

Jeg skal nævne at der er tale om et tæmmeligt stort datasæt, hvilket betyder at det skal være så effektivt som muligt.



/Jennemaan
Avatar billede tmceu Praktikant
27. september 2001 - 11:29 #1
D.v.s. at du vil have alle code slået sammen til ét felt pr. id i den relaterede tabel ?
Avatar billede jennemaan Nybegynder
27. september 2001 - 11:35 #2
tmceu > jeps
Avatar billede tmceu Praktikant
27. september 2001 - 11:40 #3
Vender lige tilbage engang efter frokost...
Avatar billede tmceu Praktikant
27. september 2001 - 19:01 #4
Jeg når ikke mere i dag, kigger tilbage i morgen.
Avatar billede cyrixcyrix Nybegynder
28. september 2001 - 15:35 #5
Jeg ved ikke om det er den letteste måde at gøre det på men det virker (hvis du har SQL Server 2000, da den understøtter User Defined Functions)

Opret en User Defined function son fx ligner dette:
-----------------------------------------------------------------
CREATE FUNCTION getCode (@id INT) 
RETURNS varchar(2000) AS 
BEGIN

DECLARE @code VARCHAR(2000)

SET @code = \'\'

SELECT @code = @code + code FROM rel WHERE id = @id
RETURN @code

END
-----------------------------------------------------------------
og en stored procedure (kan naurligvis også bare være en alm. SQL statement i noget code) der ligner:
-----------------------------------------------------------------
CREATE PROCEDURE GetCode AS

SELECT Distinct id, atext, dbo.getVarchar(id)
FROM pri
GO

-----------------------------------------------------------------
Avatar billede cyrixcyrix Nybegynder
28. september 2001 - 15:38 #6
Sorry, kaldet i SQL statementet skal naturligvis være til dbo.getCode(id) (vores funktion) og ikke dbo.getVarchar(id). jeg fik ikke lige rettet min kode til så den passede tl dit eksempel :-)
--------------------------------
CREATE PROCEDURE GetCode AS

SELECT Distinct id, atext, dbo.getVarchar(id)
FROM pri
GO

-----------------------------------------------------------------
Avatar billede jennemaan Nybegynder
28. september 2001 - 15:39 #7
cyrixcyrix > det skal kunne køre på en sql 7.

/Jennemaan
Avatar billede cyrixcyrix Nybegynder
28. september 2001 - 15:42 #8
oki, jeg tænker videre ;-)
Avatar billede jennemaan Nybegynder
28. september 2001 - 16:20 #9
Har selv løst problemet ved at skrive en giga stored proc...

Men tak for henvendelserne!

/Jennemaan



Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester