---
title: "Slå ihop"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/94903-slå-ihop"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Asa"
published: "2004-01-15T09:46:06.000Z"
updated: "2004-08-30T12:32:43.000Z"
replies: 14
views: 486
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/94903-slå-ihop"
---

# Slå ihop

## #1 — Asa, 2004-01-15T09:46Z

Har 3 sql strängar. EN som hämtar data och två som räknar olika fält i databasen. Vill nu slå ihop dessa 3 till 1 om det går. All data är ifrån samma tabell. Någon som kan?

```
[b]SQL1[/b]
Set RS = Conn.Execute("Select * From users Order By anvnamn")

[b]SQL2[/b]
Set Antal=Conn.Execute("Select Count(*) as antal From users Where sponsor='" & RS("anvnamn") & "'") 

[b]SQL3[/b]
Set Antal2=Conn.Execute("Select Count(*) as antal2 From users Where sponsor='" & RS("anvnamn") & "' and vip=1")
```

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

## #2 — Asa, 2004-01-15T10:42Z

Har testat detta men det blir fel hela tiden. Är MYSQL jag har som databas! Ni kanske vet varför det blir felet:
Microsoft OLE DB Provider for ODBC Drivers error '80040e09' 

**\[TCX\]\[MyODBC\]You have an error in your SQL syntax near 'select count(\*) from users B Where B.sponsor=U.anvnamn) as Spo1,(select c' at line 1** 

```
SQL = "SELECT U.ar,U.man,U.dag,U.userid,U.anvnamn,U.status,U.kon,(select count(*) from users B Where B.sponsor=U.anvnamn) as Spo1,
(select count(*) from users C Where C.sponsor=U.anvnamn and vip=1) as Spo2 FROM users U Group By spo1 
ORDER BY 8 DESC"
```

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

## #3 — LarsG, 2004-01-15T12:00Z

Den typen av frågor stöds inte av Mysql. Även om det gick så skulle jag ändå rekommendera att göra det som två frågor. Den första som den är nu. Frågorna med count kan man slå ihop till en

```
Select Count(*) as antal,
sum(case when vip = 1 then 1 else 0 end) as vip
 From users 
Where sponsor='" & RS("anvnamn") & "'"
```

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

## #4 — Asa, 2004-01-15T12:16Z

Okej, tackar så mycket!

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

## #5 — Asa, 2004-01-15T12:20Z

Grejjer är ju så att jag har sidnavigering på allt och sen ska bara de personer visas som har sponsrat någon. FÖrstår du. SOm det är nu kan man ju köra en if antal \> 0 men då blire ju fel med sidnavigeringen!

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

## #6 — Asa, 2004-01-15T12:29Z

Åhh, var ju bara att lägga y=y+1 innanför ifsatsen. Haha

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

## #7 — Asa, 2004-01-15T15:31Z

Funkade visst inte med det jag gjorde. Man är på sida 1 i postväg hela tiden fast man byter sida!
Koden för sidan:

```
<%Set RS = Server.CreateObject("ADODB.Recordset")

Sidan = Request.QueryString("sida")
If Sidan = "" then 
  sida = 1 
Else 
  sida = Sidan 
End If 

RS.CursorLocation = 3
RS.CacheSize = PSUSERS

SQL = "Select * From users Order By anvnamn"
RS.Open SQL, Conn%>

<table width="100%" border="0" cellspacing="0" cellpadding="2">
  <tr>
    <td valign="top" style="border-bottom: 1px solid <%=LINJE%>"><font size="2"><b>Alla rekryteringar</b></font></td>
  </tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="2" align="center">
<%If RS.EOF Then%>
  <tr>
    <td colspan="3">Ingen har rekryterat!</td>
  </tr>
<%Else%>
  <tr bgcolor="<%=BG%>">
    <td width="50%"><b>Namn</b></td>
    <td width="15%" align="center"><b>Rekryterat</b></td>
    <td width="20%" align="center"><b>Rekryt m VIP</b></td>
    <td width="15%" align="center"><b>Ratio</b></td>
  </tr>
<%RS.MoveFirst 
RS.PageSize = PSUSERS
RS.AbsolutePage = sida

Sidor =  RS.PageCount
Y = 0 
Do While Not RS.EOF And Y < RS.PageSize
If y Mod 2 = 0 then 
   color = "#F2F2F2" 
Else 
  color = "" 
End If
birthdate= CDate(RS("ar")&"-"&RS("man")&"-"&RS("dag"))
Set Antal=Conn.Execute("Select Count(*) as antal From users Where sponsor='" & RS("anvnamn") & "'")
If Antal("antal") > 0 Then
  Dim Antal2
  Set Antal2=Conn.Execute("Select Count(*) as antal2 From users Where sponsor='" & RS("anvnamn") & "' and vip=1")%>
    <tr height="24">
      <td bgcolor="<%=color%>" style="border-bottom: 1px solid #cccccc"><a href="rekryt.asp?id=<%=RS("userid")%>"><b>VISA</b></a> | <b><%If RS("status") = "1" Then%><img src="gfx/online.gif" alt="Online"><%Else%><img src="gfx/offline.gif" alt="Offline"><%End If%> <a href="chippin.asp?id=<%=RS("userid")%>"><%=Server.HTMLEncode(RS("anvnamn"))%></a></b>&nbsp;<%If RS("kon") = 1 Then%>F<%Else%>P<%End If%><%=Birth(birthdate)%></td>
      <td bgcolor="<%=color%>" style="border-bottom: 1px solid #cccccc" align="center"><%=Antal("antal")%> st</td>
      <td bgcolor="<%=color%>" style="border-bottom: 1px solid #cccccc" align="center"><%=Antal2("antal2")%> st</td>
      <td bgcolor="<%=color%>" style="border-bottom: 1px solid #cccccc" align="center"><%=Round((Antal2("antal2")/Antal("antal")) * 100,0)%> % är VIP</td>
    </tr>
  <%Antal2.Close
  Set Antal2=Nothing
y=y+1
End If
Antal.Close
Set Antal=Nothing
RS.MoveNext
Loop
If Sidor > 1 Then%>
  <tr>
    <td width="50%">
      <%If (Int(sida)) <> 1 Then%>
        <a href="rekrytering.asp?sida=<%=(Int(sida)-1)%>"><< <b>Bakåt</b></a>
      <%Else%>
        &nbsp;
      <%End If%>
    </td>
    <td width="50%" colspan="3" align="right">
      <%If (Int(sida)) <> (Int(Sidor)) Then%>
        <a href="rekrytering.asp?sida=<%=(Int(sida)+1)%>"><b>Framåt</b> >></a>
      <%Else%>
        &nbsp;
      <%End If%>
    </td>
  </tr>
<%End If
End If%>
</table>
<%RS.Close
Set RS=Nothing%>
```

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

## #8 — Asa, 2004-01-18T23:24Z

Ingne som kan hjälpa mig?

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

## #9 — J.N., 2004-01-20T14:43Z

HEJ!

Det är alltså Sidan = Request.QueryString("sida") som är fel som jag tolkar det, du får alltid =1, dvs sida är tom.

Då är det endast att gräva ned sig i koden, i detta fall själva adressen.
\- vad står det i adressfältet, sida=?
\- om du ändrar sida manuellt, blir det rätt då

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

## #10 — Asa, 2004-01-22T18:30Z

Nää det är inte det. Grejjen är att alla fält i databasen räknas och splittas upp på olika sidor som det är men nu är det så att jag har en ifsats i loopen där de som har mer än 0 visas och då blir det ju helt fel med sidorna. Man ska ju bara räkna ihop de medlemmar som värvat folk. Har mer än 0 i antal.

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

## #11 — Asa, 2004-01-27T21:26Z

Vill även sortera efter antal i första SQL strängen. Nu kommer de huller om buller.

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

## #12 — LarsG, 2004-01-27T21:30Z

Nu vet jag inte hur den select-satsen ser ut men för att sortera med avseende på värdet av en count så kan man göra

```
select count(*) as x from t order by x desc
```

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

## #13 — Asa, 2004-01-27T22:25Z

SQL1:
Select \* From users Order By anvnamn

SQL2:
Select Count(\*) as antal, sum(case when vip = 1 then 1 else 0 end) as vip From users Where sponsor='" & RS("anvnamn") & "'

Jag vill i SQL1 kunna sortera efter den med mest sponsrade men det går kaske ej för den sqlen kommer efter och går ej att bygga in i den första? För jag vill ju ha den som sponsrat flest längst upp och mins längst ner.

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

## #14 — Asa, 2004-08-29T12:05Z

Kan man kanske göra på något annat sätt då? Nån som har tips? Man ser just nu alla medlemmar. Även de som inte rekryterat någon och det vill jag inte.

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

## #15 — Asa, 2004-08-30T12:32Z

Ingen som vet eller kan ge sig på denna?

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/94903-slå-ihop
