Avatar billede ddjppol Nybegynder
09. oktober 2007 - 11:31 Der er 8 kommentarer

alt data , sepereret

Hvis nu jeg laver en select i en select så kan jeg jo kun have 1 række med via top 1 fra select'en der er i select'en.

f.eks sådan her

select hest, (select top 1 ejer from tbl_ejer where tbl_hest.ejerid = tbl_ejer.ejerid) from tbl_hest


Hvis nu jeg gerne vil have alle ejer ud på den gældende hest , (komma) sepereter, hvordan gør jeg så det?
Avatar billede michael_stim Ekspert
09. oktober 2007 - 11:38 #1
SELECT a.hest, b.ejer FROM tbl_hest a, tbl_ejer b WHERE a.ejerid IN(select ejerid from tbl_ejer where a.ejerid = ejerid)

Noget a lá dette. Komma separeret må du selv scripte dig ud af ;o)
Avatar billede sherlock Nybegynder
09. oktober 2007 - 11:46 #2
SELECT tbl_hest.hest + "," + tbl_ejer.ejer
FROM tbl_hest, tbl_ejer
WHERE tbl_hest.ejerid = tbl_ejer.ejerid
and tbl_ejer.ejerid = @ejerid
Avatar billede ddjppol Nybegynder
09. oktober 2007 - 11:54 #3
Jeg tror i misforstår.

tabel tbl_hest indholder

hest_id
hest_navn

tabel tbl_ejer indholder

ejer_id
ejer_navn
ejer_hest_id


Lad os sige at indholdet af tbl_hest ser således ud

hest_id = 1
hest_navn = hestenkurt

Lad os sige at indholdet af tbl_ejer ser således ud

ejer_id = 1
ejer_navn = Anders And
ejer_hest_id = 1

og

ejer_id = 2
ejer_navn = Peter Pan
ejer_hest_id = 1



det jeg skal have hjælp til er at mit udtræk skal indholde følgende ved en * select


hest_id = 1
hest_navn = hestenkurt
ejer_navne = Anders And, Peter Pan


Er det til at forstå?
Avatar billede sherlock Nybegynder
09. oktober 2007 - 12:13 #4
Det er til at forstå.
Og det kan laves i en stored procedure, men det er sandsynligvis nemmere i det sprog du kalder fra v.hj.a. 2 separate kald.
Avatar billede ddjppol Nybegynder
09. oktober 2007 - 12:18 #5
Det skal være i samme select... Det er derfor det driller mig lidt. Men det må da være muligt at lave et udtræk til samme felt. Altså så alt data placeres i samme felt?

Jeg har læst dette http://manuals.sybase.com/onlinebooks/group-as/asg1250e/svrtsg/@Generic__BookTextView/15335;pt=15380 men kan ikke bruge det..
eller hvad?
Avatar billede sherlock Nybegynder
09. oktober 2007 - 12:30 #6
Din reference viser bare hvordan man filtrerer med en sub-select.
Avatar billede ddjppol Nybegynder
09. oktober 2007 - 12:38 #7
Dette blev løsningen og det virker

select CustomerID,
substring(OrdIdList, 1, datalength(OrdIdList)/2 - 1)
-- strip the last ',' from the list
from
Customers c cross apply
(select convert(nvarchar(30), OrderID) + ',' as [text()]
from Orders o
where o.CustomerID = c.CustomerID
order by o.OrderID
for xml path('')) as Dummy(OrdIdList)
go


---



Er der så nogle der har en god forklaring på dette

Hvis nu mit ejer navn indholder "AndeRs aND"

Kan man så lave noget så den laver stort forbogstav på begge ord.

Jeg har helt styr på det i f.eks asp, men det skulle gerne ske i selecten... noget med alle tegn til lcase og så det første i hver ord med ucase...
Avatar billede sherlock Nybegynder
09. oktober 2007 - 16:45 #8
/*************************************************************************************************
        Copyright © 2001 Narayana Vyas Kondreddi. All rights reserved.
                                         
Purpose:    To convert a given string to proper case

Written by:    Narayana Vyas Kondreddi
        http://vyaskn.tripod.com

Tested on:     SQL Server 2000

Date modified:    December-5-2001 16:55 AM IST

Email:         vyaskn@hotmail.com

Examples:

To convert the string 'william h gates' to proper case:
SELECT dbo.PROPERCASE('william h gates')

To convert the Notes field of titles table in pubs database to proper case:
SELECT dbo.PROPERCASE(notes) FROM pubs..titles
*************************************************************************************************/
CREATE FUNCTION PROPERCASE
(
--The string to be converted to proper case
@input varchar(8000)
)
--This function returns the proper case string of varchar type
RETURNS varchar(8000)
AS
BEGIN
    IF @input IS NULL
    BEGIN
        --Just return NULL if input string is NULL
        RETURN NULL
    END
   
    --Character variable declarations
    DECLARE @output varchar(8000)
    --Integer variable declarations
    DECLARE @ctr int, @len int, @found_at int
    --Constant declarations
    DECLARE @LOWER_CASE_a int, @LOWER_CASE_z int, @Delimiter char(3), @UPPER_CASE_A int, @UPPER_CASE_Z int
   
    --Variable/Constant initializations
    SET @ctr = 1
    SET @len = LEN(@input)
    SET @output = ''
    SET @LOWER_CASE_a = 97
    SET @LOWER_CASE_z = 122
    SET @Delimiter = ' ,-'
    SET @UPPER_CASE_A = 65
    SET @UPPER_CASE_Z = 90
   
    WHILE @ctr <= @len
    BEGIN
        --This loop will take care of reccuring white spaces
        WHILE CHARINDEX(SUBSTRING(@input,@ctr,1), @Delimiter) > 0
        BEGIN
            SET @output = @output + SUBSTRING(@input,@ctr,1)
            SET @ctr = @ctr + 1
        END

        IF ASCII(SUBSTRING(@input,@ctr,1)) BETWEEN @LOWER_CASE_a AND @LOWER_CASE_z
        BEGIN
            --Converting the first character to upper case
            SET @output = @output + UPPER(SUBSTRING(@input,@ctr,1))
        END
        ELSE
        BEGIN
            SET @output = @output + SUBSTRING(@input,@ctr,1)
        END
       
        SET @ctr = @ctr + 1

        WHILE CHARINDEX(SUBSTRING(@input,@ctr,1), @Delimiter) = 0 AND (@ctr <= @len)
        BEGIN
            IF ASCII(SUBSTRING(@input,@ctr,1)) BETWEEN @UPPER_CASE_A AND @UPPER_CASE_Z
            BEGIN
                SET @output = @output + LOWER(SUBSTRING(@input,@ctr,1))
            END
            ELSE
            BEGIN
                SET @output = @output + SUBSTRING(@input,@ctr,1)
            END
            SET @ctr = @ctr + 1
        END
       
    END
RETURN @output
END
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