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.
3 svar · 310 visningar · startad av jepsO
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 " " ...
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.
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?
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