Avatar billede hairball Nybegynder
15. maj 2002 - 10:50 Der er 18 kommentarer og
1 løsning

Select-samling af flere tekster


Jeg har en tabel som ser således ud (3 poster)

1, hej, 5
2, med, 5
3, dig, 5

Hvordan kan jeg i et select få teksten 'hej med dig' ud som et resultat hvis det er værdien 5 i kolonne 3 der fortæller at de 3 ord hører sammen ?
Avatar billede skovtrold Nybegynder
15. maj 2002 - 10:53 #1
Hvad med en movenext?
Avatar billede -sofus- Nybegynder
15. maj 2002 - 10:54 #2
det her du mener ?
select * from tabel where kolone3 = '5'
Avatar billede hairball Nybegynder
15. maj 2002 - 10:55 #3
Nej, det jeg mener er noget som

SELECT SUM(Tekst) AS Sætning FROM Tekster
GROUP BY Felt3

Men Sum virker kun på tal og kan ikke samle tekster
Avatar billede skovtrold Nybegynder
15. maj 2002 - 10:56 #4
SELECT * FROM tabel WHERE kolonne3 = '5'

Og når du skriver dem ud:
<%=objRS("Tekst")%> og så hentes den næste vha <%movenext%>
Avatar billede hairball Nybegynder
15. maj 2002 - 10:58 #5
Damn skovtrold! .. det her er ikke en VB tråd! .. jeg snakker ren SQL .. jeg skal ikke ud i VB og lave noget, det hele skal foregå i en SP
Avatar billede skovtrold Nybegynder
15. maj 2002 - 10:58 #6
ok..
Avatar billede -sofus- Nybegynder
15. maj 2002 - 10:59 #7
SP ?
Avatar billede hairball Nybegynder
15. maj 2002 - 11:01 #8
Stored Procedure
Avatar billede tmceu Praktikant
15. maj 2002 - 11:01 #9
Stored Procedure, måske er SQL ikke lige din kategori :-)

Det kan måske løses med WHILE, kigger lige om jeg kan strikke noget sammen...
Avatar billede -sofus- Nybegynder
15. maj 2002 - 11:03 #10
(; prøver at lære det.. er kun nået til Query Analyzer, Enterprise Manager og VBscript
Avatar billede hansk Nybegynder
15. maj 2002 - 11:03 #11
Du kan ikke få dine ord ud på en linie via en select. Hvis de skal ud på en linie skal der tilføjes noget kode, som concatenerer teksten fra de tre rækker du får ud.

Du kan naturligvis få det skrevet ud i tre rækker (sorteret):

SELECT Tekster.tekst2 FROM Tekster Where Tekster.tekst3=5
ORDER BY Tekster.tekst1
Avatar billede hairball Nybegynder
15. maj 2002 - 11:05 #12
Ok, Damn :)
Avatar billede ocp Nybegynder
15. maj 2002 - 11:06 #13
Uha da da... så skal du nok bruge en cursor. Noget der ligner dette:

Declare @SamletStreng varchar(1000)
Declare @Tekst varchar(100)
declare @Gruppe bigint
declare @PrevGruppe bigint
set @prevgruppe = ''

Declare #crs cursor for select tekst,mingruppering from mintabel order by mingruppering

open #crs

set @streng = ''
fetch next from #crs into @tekst, @gruppe
while @@fetch_status = 0
begin
  if( @prevgruppe != '' and @prevgruppe != @gruppe )
  begin
    print @streng
    set @streng = ''
  end
  set @streng = @streng + ' ' + @tekst
  set @prevgruppe = @gruppe
  fetch next from #crs into @tekst, @gruppe
end

close #crs
deallocate #crs
Avatar billede ocp Nybegynder
15. maj 2002 - 11:07 #14
Sorry - erstat @streng med @SamletStreng
Avatar billede hairball Nybegynder
15. maj 2002 - 11:16 #15
ocp, ellers tak. Så vil jeg hellere hoppe ud og lave det i VB .. men du får aligevel pointene for din indsats ..
Avatar billede ocp Nybegynder
15. maj 2002 - 11:28 #16
Bukker og takker.
Avatar billede jakobandersen Nybegynder
15. maj 2002 - 11:44 #17
Hvis du bruger det igennem ADO's recordset objekt vil jeg anbefale dig at kigge på GetString metoden
Avatar billede tmceu Praktikant
15. maj 2002 - 11:52 #18
Sorry, skulle lige have lidt frokost...

Prøv med denne

DECLARE @Min int
DECLARE @Streng varchar(1000)

SET @Streng = ''

SET @Min = (SELECT MIN(IDF) FROM DeleteME WHERE Tal = 2)

WHILE (SELECT COUNT(*) FROM DeleteMe WHERE Tal=2 AND IDF>=@Min) > 0
BEGIN

SET @Streng = @Streng + (SELECT Tekst + ' ' FROM DeleteME WHERE Tal=2 AND IDF=@Min)

SET @Min = (SELECT MIN(IDF) FROM DeleteME WHERE Tal = 2 AND IDF>@Min)

END

PRINT @Streng

IDF = Dit 1. felt
Tekst = Dit 2. felt
Tal = Dit. 3. felt
Avatar billede tmceu Praktikant
15. maj 2002 - 11:54 #19
Den skal selvfølgelig finpudses lidt, men du bør hurtigt kunne skrive den om til din sp :-)
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