Avatar billede thomashansen Nybegynder
16. maj 2006 - 23:23 Der er 11 kommentarer og
1 løsning

SQL-sammentælling med anvendelse at UNION

<%@LANGUAGE="VBSCRIPT"%>

<!--#include file="dbconnect.asp" -->

<%
soeg = Request.QueryString("soeg")
If soeg = "" Then
    soegestreng = "'%'"
Else
    soegestreng = "'%" & soeg & "%'"
End If

Set list = Server.CreateObject ("ADODB.Recordset")
list.Open "SELECT [08Pilot].Pilot, [24KalibreringsKomponent].KalibreringskomponentPris AS SamletPris FROM 24KalibreringsKomponent INNER JOIN (08Pilot INNER JOIN (00Apparat INNER JOIN 26Log ON [00Apparat].ID_Apparat = [26Log].ID_Apparat) ON [08Pilot].ID_Pilot = [00Apparat].ID_Pilot) ON [24KalibreringsKomponent].ID_Kalibreringskomponent = [26Log].ID_Kalibreringskomponent UNION ALL SELECT [08Pilot].Pilot, [12Forsyningsmedie].ForsyningsmediePris FROM 12Forsyningsmedie INNER JOIN (08Pilot INNER JOIN (00Apparat INNER JOIN 26Log ON [00Apparat].ID_Apparat = [26Log].ID_Apparat) ON [08Pilot].ID_Pilot = [00Apparat].ID_Pilot) ON [12Forsyningsmedie].ID_Forsyningsmedie = [26Log].ID_Forsyningsmedie UNION ALL SELECT [08Pilot].Pilot, [15Reservedel].ReservedelPris FROM 08Pilot INNER JOIN ((04Model INNER JOIN 00Apparat ON [04Model].ID_Model = [00Apparat].ID_Model) INNER JOIN 15Reservedel ON [04Model].ID_Model = [15Reservedel].ID_Model) ON [08Pilot].ID_Pilot = [00Apparat].ID_Pilot WHERE ((([08Pilot].Pilot) LIKE " & soegestreng & " )) ORDER BY Pilot, SamletPris ", Conn

Set sum = Server.CreateObject ("ADODB.Recordset")
sum.Open "SELECT sum AS SamletPris FROM 24KalibreringsKomponent INNER JOIN (08Pilot INNER JOIN (00Apparat INNER JOIN 26Log ON [00Apparat].ID_Apparat = [26Log].ID_Apparat) ON [08Pilot].ID_Pilot = [00Apparat].ID_Pilot) ON [24KalibreringsKomponent].ID_Kalibreringskomponent = [26Log].ID_Kalibreringskomponent UNION ALL SELECT [08Pilot].Pilot, [12Forsyningsmedie].ForsyningsmediePris FROM 12Forsyningsmedie INNER JOIN (08Pilot INNER JOIN (00Apparat INNER JOIN 26Log ON [00Apparat].ID_Apparat = [26Log].ID_Apparat) ON [08Pilot].ID_Pilot = [00Apparat].ID_Pilot) ON [12Forsyningsmedie].ID_Forsyningsmedie = [26Log].ID_Forsyningsmedie UNION ALL SELECT [08Pilot].Pilot, [15Reservedel].ReservedelPris FROM 08Pilot INNER JOIN ((04Model INNER JOIN 00Apparat ON [04Model].ID_Model = [00Apparat].ID_Model) INNER JOIN 15Reservedel ON [04Model].ID_Model = [15Reservedel].ID_Model) ON [08Pilot].ID_Pilot = [00Apparat].ID_Pilot WHERE ((([08Pilot].Pilot) LIKE " & soegestreng & " )) ORDER BY Pilot, SamletPris ", Conn
antal = sum.fields("antal")
%>
Avatar billede thomashansen Nybegynder
16. maj 2006 - 23:24 #1
Det er "Set sum" der ikke fungerer
Avatar billede ldanielsen Nybegynder
17. maj 2006 - 13:04 #2
Virker den SQL overhovedet?

Prøv at tage den ud med Response.Write, og kør den i Query Analyzer

En union skal laves mellem SELECT's der har samme antal kolonner med samme datatype, så der er da vist fejl i din ...
Avatar billede ldanielsen Nybegynder
17. maj 2006 - 13:05 #3
Desuden er der jo ikke et felt der hedder "antal" ...
Avatar billede thomashansen Nybegynder
17. maj 2006 - 13:35 #4
Jeg er meget modtagelig overfor forslag, da jeg ikke har brugt UNION før og er noget ny i SQL
Avatar billede ldanielsen Nybegynder
17. maj 2006 - 13:48 #5
Mit forslag er vel at du konstruerer en UNION der virker, inden du starter på at lægge den i ASP
Avatar billede ldanielsen Nybegynder
17. maj 2006 - 13:53 #6
Jeg går ud fra at vi taler om MSSQL:

http://msdn2.microsoft.com/en-us/library/ms180026(SQL.90).aspx
Avatar billede thomashansen Nybegynder
17. maj 2006 - 14:47 #7
Bare lige for komme i sync. Nedenstående sætning, der "lister" det ønskede fungerer og det jeg så gerne vil er, at summere SamletPris:

SELECT [08Pilot].Pilot, [24KalibreringsKomponent].KalibreringskomponentPris AS SamletPris FROM 24KalibreringsKomponent INNER JOIN (08Pilot INNER JOIN (00Apparat INNER JOIN 26Log ON [00Apparat].ID_Apparat = [26Log].ID_Apparat) ON [08Pilot].ID_Pilot = [00Apparat].ID_Pilot) ON [24KalibreringsKomponent].ID_Kalibreringskomponent = [26Log].ID_Kalibreringskomponent UNION ALL SELECT [08Pilot].Pilot, [12Forsyningsmedie].ForsyningsmediePris FROM 12Forsyningsmedie INNER JOIN (08Pilot INNER JOIN (00Apparat INNER JOIN 26Log ON [00Apparat].ID_Apparat = [26Log].ID_Apparat) ON [08Pilot].ID_Pilot = [00Apparat].ID_Pilot) ON [12Forsyningsmedie].ID_Forsyningsmedie = [26Log].ID_Forsyningsmedie UNION ALL SELECT [08Pilot].Pilot, [15Reservedel].ReservedelPris FROM 08Pilot INNER JOIN ((04Model INNER JOIN 00Apparat ON [04Model].ID_Model = [00Apparat].ID_Model) INNER JOIN 15Reservedel ON [04Model].ID_Model = [15Reservedel].ID_Model) ON [08Pilot].ID_Pilot = [00Apparat].ID_Pilot WHERE ((([08Pilot].Pilot) LIKE " & soegestreng & ")) ORDER BY Pilot, SamletPris
Avatar billede thomashansen Nybegynder
17. maj 2006 - 14:48 #8
Eller er der uhensigtsmæssigheder i ovenstående, som er fremstillet via Access ?
Avatar billede ldanielsen Nybegynder
18. maj 2006 - 09:20 #9
Du har ikke svaret om det er MSSQL, men det går jeg ud fra

Hvis du nu gemmer det i et view, vw_HvadDuNuVil, så kan du:

SELECT SUM(SamletPris) FROM vw_HvadDuNuVil

Jeg ved godt at QWuery Designeren ikke uderstøtter UNION, men derfor kan du godt lave et viev der indeholder UNION, du skal bare selv skrive det.
Avatar billede thomashansen Nybegynder
20. maj 2006 - 18:20 #10
Undskyld - det er MSSQL vi taler om, men så vidt jeg ved understøtter Access som jeg bruger, ikke VIEW´s ?
Avatar billede thomashansen Nybegynder
21. maj 2006 - 16:44 #11
Jeg har fået løst problemet, men læg et svar, så får du dine points
Avatar billede ldanielsen Nybegynder
22. maj 2006 - 09:29 #12
Access understøtter views, men anyway ...
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
Kurser inden for grundlæggende programmering

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