---
title: "Person som jobbar i flera enheter; lista samma rad?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/128742-person-som-jobbar-i-flera-enheter-lista-samma-rad"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "CokeLight"
published: "2005-05-23T16:46:38.000Z"
updated: "2005-05-24T15:08:48.000Z"
replies: 8
views: 311
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/128742-person-som-jobbar-i-flera-enheter-lista-samma-rad"
---

# Person som jobbar i flera enheter; lista samma rad?

## #1 — CokeLight, 2005-05-23T16:46Z

Hejsan, undrar om nån vet hur hur ändrar man från detta:

> F_namn	E_namn		Enhet
> Lisa	Nilsson		Enh1 -- personal_id: 89
> Lisa	Nilsson		Enh2 -- personal_id: 89
> Kalle	Sten		Enh1
> Sara	Renholm		Enh3
> Lisa	Nilsson		Enh4 -- personal_id: 292

till

> F_namn	E_namn		Enhet
> Lisa	Nilsson		Enh1/Enh2 -- personal_id: 89
> Kalle	Sten		Enh1
> Sara	Renholm		Enh3
> Lisa	Nilsson		Enh4 -- personal_id: 292

Det är tre tabeller som ligger till grund; 

1\. Enheter
2\. Personal
3\. Plats (kopplingsbox eftersom det är många-många).

> Enheter:
> Enhets_id, Enhet (etc)
> 
> Personal:
> Id, f_namn, E_namn, telefon
> 
> Plats:
> Personal_id, Enhets_Id

Min SQL för att lista fram personal och enheter ser ut så här:

```
SET @sqlStmt = "SELECT DISTINCT per.e_namn, per.f_namn,
enh.enhet, per.telefon FROM plats pla INNER JOIN 
personal per ON pla.personal_id = per.Id INNER JOIN Enheter 
enh ON pla.enhets_id = enh.enhets_id WHERE per.e_namn LIKE '" + @letter +
"%' ORDER BY " + @sortCriteria + " " + @sortOrder
```

Jag har suttit ganska lång tid o inte kommit på nån vettig SQL för att lösa detta.. tyckte det var mycket svårt.. om det går att lösa med SQL istället för med applikationskod skulle det vara suveränt.. :) om det inte går att lösa får det vara helt enkelt..

Permalänk: https://www.webforum.nu/p/128742

## #2 — LarsG, 2005-05-23T16:54Z

Beror på DBMS, då vissa har en fördefinierad funktion för detta. Annars får man skriva en egen funktion.

Permalänk: https://www.webforum.nu/p/1615884

## #3 — CokeLight, 2005-05-23T16:57Z

Hej LarsG :) (MS) jag kör med SQL server.. kan det finnas inbyggd funktion för just det här??? oj.. 

vore kul att se hur en egen funktion ser ut också...? : )

\* väntar med spänning \* hehe

Permalänk: https://www.webforum.nu/p/1615885

## #4 — LarsG, 2005-05-23T17:08Z

```
create function nefertite(@personal_id int)
returns varchar(200)
as
begin
    declare @enheter varchar(200)
    select @enheter = coalesce(@enheter + '/','') + enhet
      from enheter
     where enhets_id in (
         select enhets_id 
           from plats
          where personal_id = @personal_id)
    return @enheter
end
```

anropas med

```
select Id, f_namn, E_namn,dbo..nefertite(id)
from personal
```

ungefär

Permalänk: https://www.webforum.nu/p/1615891

## #5 — CokeLight, 2005-05-23T17:31Z

Hej LarsG ! oj.. ser jättefint ut.. nefertite skapades utan problem.. 

nu skäms jag för att jag inte fick det att fungera, men när jag körde 

```
select Id, f_namn, E_namn,dbo..nefertite(id)
from personal
```

 

> Server: Msg 102, Level 15, State 1, Line 1
> Incorrect syntax near '('.

 

..?

Permalänk: https://www.webforum.nu/p/1615902

## #6 — LarsG, 2005-05-23T17:37Z

```
dbo.nefertite(id)
```

skall det vara

Permalänk: https://www.webforum.nu/p/1615906

## #7 — CokeLight, 2005-05-23T17:45Z

ooooooooo ! Jag är grymt imponerad !!!! :))) hade inte kommit på det där om jag suttit hela natten.. eller veckan för den delen.. ! att det är så lite kod.. när jag spånade blev det kaos.. 

hehe.. varför "nefertite"...? sökte på google.. fick att det var portugisiska.. eller namnet på faraos fru.. eller nåt band.. nåja, stort tack..!!! ska titta på koden en gång till o försöka greppa den... :)

Permalänk: https://www.webforum.nu/p/1615910

## #8 — CokeLight, 2005-05-24T09:15Z

Hej igen.. satt o höll på med SQL satsen från igår.. :) jag kom på att det inte gick att använda AS 

```
dbo.nefertite(id) AS enhet_nef
```

 

o sen från applikationen selecta enhet_nef som en kolumn, och funderade ifall det kanske måste finnas en kolumn som heter så och inte bara ett alias?

Så jag provade att skapa en temporär tabell som då kunde returnera rätt värden till applikationen men får inte till syntaxen (om det finns enklare sätt så provar jag gärna det såklart :)

```
CREATE PROCEDURE dbo.coke_getAllStaffNoEmail
	@sortCriteria varchar(20),
	@sortOrder varchar(5)
AS

CREATE TABLE @#tableTemp
(
	tmpId	int	IDENTITY(1,1),
	e_namn varchar(30),
	f_namn varchar(30),
	enhet_nef varchar(100),
	telefon varchar(30)	
)

DECLARE @sqlStmt varchar(455) 

-- Här vill jag inserta värden till #tableTemp så att jag 
-- kan selecta från den sen med @sqlStmt2
SET @sqlStmt = "INSERT INTO #tableTemp
SELECT DISTINCT per.e_namn, per.f_namn,
dbo.nefertite(id) AS enhet_nef, per.telefon FROM plats pla INNER JOIN 
personal per ON pla.personal_id = per.Id INNER JOIN Enheter 
enh ON pla.enhets_id = enh.enhets_id
ORDER BY " + @sortCriteria + " " + @sortOrder

DECLARE @sqlStmt2 varchar(255) 

SET @sqlStmt2 = "SELECT DISTINCT per.e_namn, per.f_namn,
enhet_nef, per.telefon FROM #tableTemp ORDER BY " + @sortCriteria + " " + @sortOrder

EXEC sp_executesql @sqlStmt2
GO
```

 

Sen får jag också fel att maximum längden är 128. Det är ett fel jag inte begriper mig på heller !! ibland går det att lösa genom att sätta hela SQL strängen i en variabel och testa med enkel-/dubell fnuttar.. ibland blir det fel vilket som..?? :)

Permalänk: https://www.webforum.nu/p/1616100

## #9 — CokeLight, 2005-05-24T15:08Z

ursäkta så mycket.. det funkade visst såsom det var tänkt från början.. jag som klantade mig imorse ! satt o höll på med lite annat o testade av en slump en gång till och så fungerade det plötsligt med 

```
dbo.nefertite(id) AS enhet
```

  

jag är supernöjd.. tack för hjälpen igen !! :)

Permalänk: https://www.webforum.nu/p/1616291

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/128742-person-som-jobbar-i-flera-enheter-lista-samma-rad
