---
title: "SELECT"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/122120-select"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "devotion"
published: "2005-02-09T20:19:12.000Z"
updated: "2005-02-12T21:17:59.000Z"
replies: 12
views: 522
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/122120-select"
---

# SELECT

## #1 — devotion, 2005-02-09T20:19Z

:) 
Premiär i detta forum!

Varför visar inte denna SQL-string dubletter i databasen?

```
strSQL = "SELECT tblArticle.articleName, tblArticle.articleUnit, tblCart.userId, tblCart.quantity, tblDiscount.articleDiscount, tblPrice.articlePrice, tblSupplier.SupplierName, tblArticle.eNumber FROM (((tblArticle INNER JOIN tblCart ON tblArticle.eNumber = tblCart.eNumber) INNER JOIN tblPrice ON tblArticle.eNumber = tblPrice.eNumber) INNER JOIN tblDiscount ON tblPrice.articleCategory = tblDiscount.articleCategory) INNER JOIN tblSupplier ON tblPrice.articleSupplierId = tblSupplier.SupplierId WHERE tblCart.userId = " & session("userId") & " ORDER BY tblArticle.eNumber, tblPrice.articlePrice ASC"
```

Har testat att göra en fråga i access med exakt samma sträng och det funkar...

mvh

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

## #2 — LarsG, 2005-02-09T20:31Z

?

Dubletter i vadå?

Vilket resultat förväntar du dig och vilket får du? 

Exemplifiera med datainnehåll.

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

## #3 — devotion, 2005-02-09T20:41Z

:( 
Ok, kanske inte så bra förklarat...

SQL-satsen ska hämta information från en kundkorg, tblcart. I tblCart ligger bara antal, artikelnummer, benämning samt ett userId. Resten joinas fran tblPrice, tblArticle mfl.

Informationen loopas fram med ett recordset och presenteras i tabellform.

Problemet är att om jag lagt till samma artikel 2 gånger (dublett i databas) så visas bara en i presentationen. 

När jag summerar priserna recordsetet så räknas alla priserna dvs även dubletterna. Så alla posterna loopas igenom.

Det fungerar som en SELECT DISTINCT fast det bara är en SELECT.

Kanske är något i asp-koden som gör det?
Mvh

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

## #4 — devotion, 2005-02-09T21:01Z

Hej!

Här kommer hela scrpitet...

```
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<% Option Explicit %>
<%session.lcid=1053%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Kundvagn</title>
<link href="../Stylesheet/stylemainFrame.css" rel="stylesheet" type="text/css">
</head>
<body>
<%

Dim objConn, strSearchField, strSQL, objRS, intCounter, objDict, strEnumber, strArticleName, strUnit, strSupplier, curPrice, strFC, strLowest, strLastENumber, strLastSupplier, objPricesDict, strOrder, bgcolor, strOption, strShow, lngTotalStorel, lngTotalSolar 

If session("userId") <> "" Then

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.ConnectionString = "DSN=IntranetSydostel"
objConn.Open 

strSQL = "SELECT tblArticle.articleName, tblArticle.articleUnit, tblCart.userId, tblCart.quantity, tblDiscount.articleDiscount, tblPrice.articlePrice, tblSupplier.SupplierName, tblArticle.eNumber FROM (((tblArticle INNER JOIN tblCart ON tblArticle.eNumber = tblCart.eNumber) INNER JOIN tblPrice ON tblArticle.eNumber = tblPrice.eNumber) INNER JOIN tblDiscount ON tblPrice.articleCategory = tblDiscount.articleCategory) INNER JOIN tblSupplier ON tblPrice.articleSupplierId = tblSupplier.SupplierId WHERE tblCart.userId = " & session("userId") & " ORDER BY tblArticle.eNumber, tblPrice.articlePrice ASC"

lngTotalStorel = 0
lngTotalSolar = 0

Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, objConn, 3, 1 ' Recordsetet öppnar vi så här för att kunna få ut ett värde från egenskapen  recordcount.
intCounter = 0 ' skapa en liten posträknare som vi sedan räknar upp

Set objDict = Server.CreateObject("Scripting.Dictionary") 'ett dictionaryobjekt

If objRS.EOF then
	Response.Write("<span class=""text"">Kundvagnen är tom!</span><br>")
Else
	
	Response.Write("<span class=""text"">Följande artiklar finns i kundvagnen:</span><br><br>")

	Response.write "<table width=""690"" border=""0"" cellspacing=""0"" cellpadding=""0""><tr class=""tabellhuvud""><td width=""60"" height=""18"" class=""tabellhuvud"">E-nr</td><td width=""250"" class=""tabellhuvud"">Benämning</td><td width=""45"" class=""tabellhuvud"">Enhet</td><td width=""75"" class=""tabellhuvud"">Solar</td><td width=""75"" class=""tabellhuvud"">Storel</td><td width=""75"" class=""tabellhuvud"">Ahlsell</td><td width=""60"" class=""tabellhuvud"">Lägst</td><td width=""50"" class=""tabellhuvud"">ta bort</td></tr>"
	

	Do While not objRS.EOF
		strENumber = "" & objRS("ENumber")
		strArticleName = "" & objRS("articleName")
		strUnit = "" & objRS("articleUnit")
		strSupplier = "" & objRS("SupplierName")
        
          'If strShow = "avtal" then  
        'curPrice = "" & FormatCurrency(Cdbl(objRS("articlePriceWithDiscount")))
         ' End If
           'If strShow = "netto" then
         curPrice = "" & FormatCurrency(Cdbl(objRS("articlePrice"))*0.01)
           'End If
Select case strSupplier
     Case "Storel"
          lngTotalStorel = lngTotalStorel + CLng(objRS("articlePrice")*0.01)
     Case "Solar"
          lngTotalSolar = lngTotalSolar + CLng(objRS("articlePrice")*0.01)

End Select

		if strENumber <> strLastEnumber then
			if intCounter <> 0  then
				' aha, här har det gjorts saker förut. Skicka iväg till utskriftsfunktionen.
				' markering av det jättesunkiga priset
				objDict.Item(strLastSupplier) = Replace(objDict.Item(strLastSupplier), "black", "red")
				call writePrices(objDict)
				objDict.RemoveAll
			end if
			set objDict = Server.CreateObject("Scripting.Dictionary")
			objDict.Add "eNumber", strENumber
			objDict.Add "articleName", strArticleName
			objDict.Add "articleUnit", strUnit
			intCounter = 1
			strLastENumber = strENumber
		else
			intCounter=intCounter + 1
		end if
		if not objDict.Exists(strSupplier) then
	      ' Bara en säkerhetskoll att vi inte lägger in något om det redan är inlagt för denna leverantör
			select case intCounter
			case 1
				' weee, det här är det jättebästa priset!
				strFC = "green"
				objDict.Add "lowest", strSupplier
			case else
				strFC = "black"
			end select
			strLastSupplier = strSupplier
			objDict.Add strSupplier, "<font color=""" & strFC & """>" & curPrice & "</font>"
		end if

		objRS.MoveNext
	Loop
	' Vi måste köra visningskoden här också för att få med den sista produkten.
	
	objDict.Item(strLastSupplier) = Replace(objDict.Item(strLastSupplier), "black", "red")
	call writePrices(objDict)
	Response.write "<tr class=""tabellhuvud""><td width=""60"" height=""18"" class=""tabellhuvud""></td><td width=""250"" class=""tabellhuvud""></td><td width=""45"" class=""tabellhuvud"">Summa</td><td width=""75"" class=""tabellhuvud"">" & FormatCurrency(lngTotalSolar) & "</td><td width=""75"" class=""tabellhuvud"">" & FormatCurrency(lngTotalStorel) & "</td><td width=""75"" class=""tabellhuvud""></td><td width=""60"" class=""tabellhuvud""></td><td width=""50"" class=""tabellhuvud""></td></tr>"
	Response.Write "</table>"
End if

objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing

Set objDict = Nothing
Set objPricesDict = Nothing

public sub writePrices (objPricesDict)
   If bgcolor = "#FFFFFF" then bgcolor = "#EFEFEF" else bgcolor = "#FFFFFF"
   Response.write "<tr onMouseOver=""this.style.backgroundColor='#D3DEF8';"" onMouseOut=""this.style.backgroundColor='';"" bgcolor=""" & bgcolor & """><td height=""20"" class=""itabell"">" & objPricesDict.Item("eNumber") & "</td><td class=""itabell"">" & objPricesDict.Item("articleName") & "</td><td class=""itabell"">" & objPricesDict.Item("articleUnit") & "</td>"
   if objPricesDict.Exists("Solar") then
       Response.write "<td class=""itabell"">" & objPricesDict.Item("Solar") & "</td>"
   else
       Response.write "<td class=""itabell""><i>Saknas</i></td>"
   end if
   if objPricesDict.Exists("Storel") then
       Response.write "<td class=""itabell"">" & objPricesDict.Item("Storel") & "</td>"
   else
       Response.write "<td class=""itabell""><i>Saknas</i></td>"
   end if
   if objPricesDict.Exists("Elektroskandia") then
       Response.write "<td class=""itabell"">" & objPricesDict.Item("Elektroskandia") & "</td>"
   else
       Response.write "<td class=""itabell""><i>Saknas</i></td>"
   end if
   Response.write "<td class=""itabell"">" & objPricesDict.Item("lowest") & "</td>"
Response.Write "<td class=""itabell""><a href=""removeArticle.asp?eNumber=" & objPricesDict.Item("eNumber") & """><img src=""../Images/soptunna.gif"" alt=""Klicka här för att lägga till artikeln!"" width=""31"" height=""17"" border=""0""></a></td>"

end sub
Else
Response.Write "Ej inloggad"
End if
%> 
</body>
</html>
```

Mvh

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

## #5 — devotion, 2005-02-10T15:22Z

:) 
Någon?

mvh

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

## #6 — LarsG, 2005-02-10T17:38Z

Du har ju någon kontroll om det kommer flera likadana ENumber efter varandra

```
if strENumber <> strLastEnumber then
```

Det är väl där du får ändra så att det passar.

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

## #7 — devotion, 2005-02-10T18:38Z

:( 
Vetifan om jag reder ut det där skriptet... Har fått jättemycket hjälp av bla @nders. Tack! Problemet nu är att jag bygger på det med nya funktioner som krockar med andra och jag själv har inte tillräcklig kunskap för att reda ut det....

Känns som jag får börja om och ställa specifikationen för hur det ska fungera innan jag börjar koda...   och läsa på mer.... eller göra det simpelt och enkelt.

Om någon vill hjälpa mig är det bara att höra av sig...

Tack alla som hjäpt till!

 :x  :x  :x

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

## #8 — @nders, 2005-02-10T18:50Z

Jag förstår inte riktigt vad du är ute efter... Men:

> Problemet är att om jag lagt till samma artikel 2 gånger (dublett i databas) så visas bara en i presentationen.

Så hade jag inte gjort. Ligger artikeln redan i kundvagnen skulle jag uppdaterat antalet på den posten i tabellen, inte lägga till en ny post. Det är kanske där du ska börja?

Mvh

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

## #9 — devotion, 2005-02-10T19:13Z

Hej du barmhärtige människa.... :) 

Jo, jag har tänkt på det och även tänkt åtgärda det.  Och det är väl rätt väg att gå. 

Men jag kände på att det kanske skulle bli ett "inbyggt fel" om man inte åtgärdar det....

Som sagt. Mina ideér är större än kunskaperna...

Men det är väl i cart.asp som posterna skall uppdateras istället för att läggas till om de redan finns där.

MEN (detta ständiga men)

Hur gör jag för att uppdatera en post och samtidigt ha kvar de antal som redan finns i kundvagnen

Dvs ta om antalet av en vara i kundvagnen är 3 så lägger jag till en till

Efter uppdateringen skall det vara 4 i kundvagnen

Jag får trösta mig med att jag inte behöver ställa 2 frågor på samma sak eftersom jag lär mig hela tiden....  Det är dock mycket kvar att lära!

mvh

En mycket frustrerad

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

## #10 — aasah, 2005-02-11T08:20Z

> **devotion skrev:**
>
> ... Jo, jag har tänkt på det och även tänkt åtgärda det.  Och det är väl rätt väg att gå. ...

Ja. I en relationsdatabas (vilket du använder) ska man inte lagra dubbletter.

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

## #11 — @nders, 2005-02-11T08:26Z

> Hur gör jag för att uppdatera en post och samtidigt ha kvar de antal som redan finns i kundvagnen

 <http://www.webforum.nu/showthread.php?s=&postid=994544#post994544>

I din UPDATE kan du ju alltid skriva, exempel:

```
UPDATE tbl SET fält = fält + 1 WHERE fält = värde
```

mvh

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

## #12 — aasah, 2005-02-11T08:37Z

Med risk för att vara övertydlig:

> **@nders skrev:**
>
> ... I din UPDATE kan du ju alltid skriva, exempel:
>
> ```
> UPDATE tbl SET fält = fält + 1 WHERE fält = värde
> ```

Troligtvis vill du nog använda ett annat fält i Where-klausulen än i set-delen, dock... Annars uppdateras alla varor i den kvantiteten samtidigt....

Alltså exempel:
UPDATE tbl SET kvantitet = kvantitet + 1 WHERE produktnr = värde

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

## #13 — devotion, 2005-02-12T21:17Z

:e 
Då fixade det till sig oxå...

Blir mycket bättre om man gör rätt ffrån början!!! :birp 

Mvh

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/122120-select
