Underforspørgsel - sammensætning af to SQL-koder
HejJeg har tre tabeller: MicroLeverandørData, BOM-styringer, BOM
Ud fra MicroLeverandørData, BOM-styringer har jeg lavet en forespørgsel, med følgende SQL-kode.
SELECT MicroLeverandørData.Komponentnr, MicroLeverandørData.Beskrivelse, Count([BOM-styringer].Komponentnr) AS [# styringer]
FROM MicroLeverandørData INNER JOIN [BOM-styringer] ON MicroLeverandørData.Komponentnr=[BOM-styringer].Komponentnr
GROUP BY MicroLeverandørData.Komponentnr, MicroLeverandørData.Beskrivelse;
micro#Styringer
Her relaterer jeg komponentnr. fra de to tabeller og tæller hvor mange mange komponentnr. joines og vist for de enkelte komponentnr fra MicroLeverandørData
Det giver følgende
Komponentnr Beskrivelse # styringer
601541 SMD Micro Masket 1
96485714 SMD MICRO Mask 12
96549671 SMD MICRO Mask 3
96558760 Micro programmed 3
96612309 Micro programmed 1
96626232 Micro prog. 1
96637738 Micro programmed 2
96797081 SMD Micro Masked 7
Derudover har jeg lavet forespørgselen; Micro#Pumper, der også anvender forespørgslen BOM.
SELECT MicroLeverandørData.Komponentnr, MicroLeverandørData.Beskrivelse, Count(BOM.Komponentnr) AS [# Pumper]
FROM BOM INNER JOIN (MicroLeverandørData INNER JOIN [BOM-styringer] ON MicroLeverandørData.Komponentnr = [BOM-styringer].Komponentnr) ON BOM.Komponentnr = [BOM-styringer].Styring
GROUP BY MicroLeverandørData.Komponentnr, MicroLeverandørData.Beskrivelse;
Micro#Pumper
Her tælles hvor mange gange komponentnr fra BOM joines og igen opstillet pr. komponentnr fra tabellen MicroLeverandørData - det giver følgende:
Komponentnr Beskrivelse # Pumper
601541 SMD Micro Masket 1
96485714 SMD MICRO Mask 39
96549671 SMD MICRO Mask 4
96558760 Micro programmed) 5
96612309 Micro programmed 5
96626232 Micro prog. 1
96637738 Micro programmed 2
96797081 SMD Micro Masked 34
Jeg vil gerne have et view der viser Komponentnr, Beskrivelse, #Styring, #Pumper, således de ovenstående views vises sammen. Det er ikke umiddelbart muligt bare at vise #pumper i den første forespørgsel eller omvendt - de skal derfor kombineres.
Jeg har sammensat de to forespørgsler i en ny med følgende SQL-kode:
SELECT [Micro#Pumper].Komponentnr, [Micro#Pumper].Beskrivelse, [Micro#Pumper].[# Pumper], [micro#Styringer].[# styringer]
FROM [micro#Styringer] INNER JOIN [Micro#Pumper] ON [micro#Styringer].Komponentnr = [Micro#Pumper].Komponentnr
GROUP BY [Micro#Pumper].Komponentnr, [Micro#Pumper].Beskrivelse, [Micro#Pumper].[# Pumper], [micro#Styringer].[# styringer];
men vil gerne væk fra at sætte to forespørgsler sammen og i stedet danne en SQL-kode. Jeg har forsøgt mig med følgende SQL-kode:
SELECT MicroLeverandørData.Komponentnr, MicroLeverandørData.Beskrivelse, Count(BOM.Komponentnr) AS [# Pumper],
(SELECT Count([BOM-styringer].Komponentnr)
FROM MicroLeverandørData INNER JOIN [BOM-styringer] ON MicroLeverandørData.Komponentnr = [BOM-styringer].Komponentnr;) AS [# styringer]
FROM BOM INNER JOIN (MicroLeverandørData INNER JOIN [BOM-styringer] ON MicroLeverandørData.Komponentnr = [BOM-styringer].Komponentnr) ON BOM.Komponentnr = [BOM-styringer].Styring
GROUP BY MicroLeverandørData.Komponentnr, MicroLeverandørData.Beskrivelse;
Hvilket giver følgende view, hvor antal styringer desværre er givet ved det samlede antal og ikke pr. komponentnr.
Komponentnr Beskrivelse # Pumper # styringer
601541 SMD Micro Masket 1 30
96485714 SMD MICRO Mask 39 30
96549671 SMD MICRO Mask 4 30
96558760 Micro programmed 5 30
96612309 Micro programmed 5 30
96626232 Micro prog. 1 30
96637738 Micro programmed 2 30
96797081 SMD Micro Masked 34 30
Er der en lille ting jeg gør forkert? Eller kan det ikke løses?
Håber nogen kan hjælpe