webForumDet fria alternativet

Gruppera projekt efter chef och visa/sortera efter totalkostnad

3 svar · 309 visningar · startad av jepsO

jepsOMedlem sedan mars 2001484 inlägg
#1

En kollega kom med följande Access-tabell till mig, som hon hade döpt till "Data". Såhär såg innehållet ut:

MANAGER                 PROJECT       COST
==========================================
Adam                    Charlie       4
Bertil                  Delta         10
Cesar                   Juliett       2
Cesar                   Kilo          3
David/Erik              India         14
Filip                   Quebec        31
Adam/Gustav/Helge/      Romeo         5
Bertil/Ivar/Johan       Zulu          22
Kalle                   Lima          9
Kalle/Ludvig            Tango         7

Ja, tabellen är feldesignad. Men det kommer vi till senare. Först och främst, önskad output:

MANAGER     PROJECT       COST    TOTAL COST
============================================
Bertil      Delta         10      32
            Zulu          22
Filip       Quebec        31      31
Ivar        Zulu          22      22
Johan       Zulu          22      22
David       India         14      14
Erik        India         14      14
Kalle       Lima          9       16
            Tango         7
Adam        Charlie       4       9
            Romeo         5
Ludvig      Tango         7       7
Cesar       Juliett       2       5
            Kilo          3
Gustav      Romeo         5       5
Helge       Romeo         5       5

Som synes är projekten nu grupperade efter chef, plus att totalkostnaden för varje chef visas. Denna totalkostnad styr också ordningen i vilken resultatet visas.

TABELLSTRUKTUREN
Felaktig, som sagt Dela upp tabellen i tre, typ såhär?
Managers(ID, Name)
Projects(ID, Name, Cost)
ManagedBy(ManagerID, ProjectID)

SQL
Jag har ärligt talat ingen aning om huruvida man kan åstadkomma ovanstående output eller ej -- i Access, märk väl! Jag började lattja med några SQL-frågor, men lyckades inget vidare.

Vad tror ni? Jag känner mig ganska " :q " ...

LarsGMedlem sedan dec. 200012 464 inlägg
#2

Att med den tabellstrukturen få det resultatet direkt med en SQL-fråga? Glöm det.

Det är lika bra att göra om modellen direkt och det du har föreslagit verkar ok.

jepsOMedlem sedan mars 2001484 inlägg
#3

LarsG skrev:

Att med den tabellstrukturen få det resultatet direkt med en SQL-fråga? Glöm det.

Det är lika bra att göra om modellen direkt och det du har föreslagit verkar ok.

Okej, jag borde ha uttryckt mig tydligare. Ar det mojligt att med den "nya" strukturen astadkomma det onskade resultatet, tror ni?

Att den forsta strukturen ar hopplos haller jag med om -- den ska jag fa henne att skrota i vilket fall ;).

Sahar skulle innehallet se ut i de tre nya tabellerna:

## MANAGERS ##		## PROJECTS ##		## MANAGEDBY
================	====================	=========================
ID	Name		ID	Name	Cost	ManagerID	ProjectID
----------------	--------------------	-------------------------
1	Adam		1	Charlie	4	1		1
2	Bertil 		2	Delta	10	1		8
3	Cesar		3	India	14	2		2
4	David		4	Juliett 2	2		9
5	Erik		5	Kilo	3	3		4
6	Filip		6	Lima    9	3		5
7	Gustav		7	Quebec  31	...
8	Helge		8	Romeo   5
9	Ivar		9	Zulu    22
10	Johan
11	Kalle
12	Ludvig

Alltsa: Ser ni nagon mojlighet att via SQL astadkomma onskad output i forsta inlagget?

LarsGMedlem sedan dec. 200012 464 inlägg
#4

Jag misstänkte att det nog var det du ville ha svar på.

Att få ett resultat som

Bertil      Delta         10      32
              Zulu          22

dvs att repeterande rader undertrycks är inte enkelt. Det är dock lätt att hantera i applikationen.

select m.name as manager,
 p.name as project,
 p.cost,
(select sum(cost)
   from projects
  where id
  in (select projectid
       from managedby
    where managerid = m.id) as total_cost
from managers m,
        projects p,
        managedby mb
where m.id = mb.managerid
 and mb.projectid = p.id
order by 4 desc
129 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)