---
title: "Göra join utan relationer"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/137139-göra-join-utan-relationer/page2"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "WebbisNet"
published: "2005-11-07T19:33:27.000Z"
updated: "2005-11-08T19:58:43.000Z"
replies: 38
views: 1310
page: 2
pages: 2
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/137139-göra-join-utan-relationer"
---

# Göra join utan relationer

_Sida 2 av 2._

## #21 — emission, 2005-11-07T22:00Z

Mer specifikt vill jag se koden där visitor-recordsetet skapas, och raderna runt detta

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

## #22 — WebbisNet, 2005-11-07T22:03Z

```
if view("sex")="F" then
gender="Kvinna"
else
gender="Man"
end if

if CBool(view("inloggad")) then
online="<font color=""green"">Online</font>"
else
offline="<font color=""red"">Offline</font>"
end if

username=view("username")

Set visitor=objConn.Execute("SELECT DISTINCT ID, userID, username, HomeUserId, HomeVisitorId, HomeDateVisited, HomeTimeVisited FROM tblusers_visitors INNER JOIN tblUsers ON tblusers_visitors.HomeVisitorID = tblUsers.userid WHERE HomeUserId="& request("userID") &" ORDER BY ID DESC limit 5")

lUserId = request("userID")   '# krypinets ägares id
lVisitorId = CLng(UserID)   '# besökarens id
commDate=Date()
commTime=Time()
if lUserId <> lVisitorId then
objConn.execute "INSERT INTO tblUsers_visitors (HomeUserId, HomeVisitorId, HomeDateVisited,HomeTimeVisited) VALUES(" & lUserId & "," & lVisitorId & ",'" & commDate & "','" & commTime & "')"
end if

imageLink="Http://images.webbisen.com"%>

<SCRIPT LANGUAGE="JavaScript" src="/include/scripts.js"></script>

<script language="JavaScript" type="text/javascript">
<!--
function Pic(PID)
{ 
window.open("/viewPic.asp?ID="+PID,"Pic","left=100, top=100, location=no, toolbar=no, scrollbars=no, resizable=no");    
}
//-->
</script>
```

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

## #23 — WebbisNet, 2005-11-07T22:23Z

Hur får man förresten 
antalKillar=Cint(killar("Antal")/sum("Antal")\*100)
antalTjejer=Cint(tjejer("Antal")/sum("Antal")\*100)

att funka i MySQL

Nu har jag två olika frågor som jag gärna vill lösa :-)

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

## #24 — emission, 2005-11-07T22:38Z

Vi testar...

Sök endast ut de kolumner som du behöver

```
Set visitor=objConn.Execute("SELECT DISTINCT userID, username, HomeDateVisited, HomeTimeVisited FROM tblusers_visitors INNER JOIN tblUsers ON tblusers_visitors.HomeVisitorID = tblUsers.userid WHERE HomeUserId="& request("userID") &" ORDER BY ID DESC limit 5")
```

...och plocka ut värdena i variabler

```
<%do until visitor.eof
visitor_HomeTimeVisited=visitor("HomeTimeVisited")
visitor_HomeDateVisited=visitor("HomeDateVisited")
visitor_username=visitor("username")
visitor_userID=visitor("userID")

%>
<a href="javascript:popup(<%=visitor_userID%>);"><img border="0" ALT="Information om <%=visitor_username%>" src="/images/icons/info.gif"></a>

<a class="menu" <%=linkmessage%> href="view.asp?userID=<%=visitor_userID%>">
<%
If Len(visitor_username) > 5 Then
    Response.Write Left(visitor_username, 5) & ".."
Else
    Response.Write visitor_username
End If%>
</a> 
&nbsp;<%=visitor_HomeDateVisited%>&nbsp;<%=visitor_HomeTimeVisited%><br /> 
<%visitor.movenext:loop%>
```

Prova gärna ändringarna var för sig, så att vi vet vad som funkar, om det funkar.

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

## #25 — WebbisNet, 2005-11-07T22:48Z

med nya SQL-en: Ingen skillnad

med visitor-loopen: Ingen skillnad

Ser fortfarande
Webbi..  2005-11-07 2005-11-07
 Webbi..  2005-11-07 2005-11-07
 Webbi..  2005-11-07 2005-11-07
 test  2005-11-07 2005-11-07
 Webbi..  2005-11-07 2005-11-07

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

## #26 — emission, 2005-11-07T22:51Z

> **WebbisNet skrev:**
>
> Hur får man förresten 
> antalKillar=Cint(killar("Antal")/sum("Antal")\*100)
> antalTjejer=Cint(tjejer("Antal")/sum("Antal")\*100)
> 
> att funka i MySQL
> 
> Nu har jag två olika frågor som jag gärna vill lösa :-)

Om du kör med 3 olika frågor, som du verkar ha gjort i Access (om den kod du visade var riktig), så funkar det precis likadant. Koden du visade är ASP-kod, så den är i princip inte beroende av vad du kör för DBMS.

Med en fråga kan du göra så här:

```
SELECT COUNT(*) as UserCount,COUNT(CASE WHEN Sex='M' THEN 1 ELSE NULL END) as MaleCount,COUNT(CASE WHEN Sex='F' THEN 1 ELSE NULL END) as FemaleCount FROM tblUsers
```

och med ett recordset från den frågan 

```
antalKillar=Cint(rs("MaleCount")/rs("UserCount")*100)
antalTjejer=Cint(rs("FemaleCount")/rs("UserCount")*100)
```

Man kan göra procentberäkningen direkt i SQL:en om man vill, men jag tänkte att det kunde vara trevligt att få ut de exakta antalen. Exemplet gör det möjligt att introducera andra kön också (!). Egentligen räcker det ju att plocka ut antalet för det ena könet.

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

## #27 — emission, 2005-11-07T22:58Z

Lite testkod:

```
<%do until visitor.eof

for each field in visitor.fields
   Response.Write field.Name & ":" & field.Type & ":" & visitor(field.Name) & "<BR>"
next
visitor_HomeTimeVisited=visitor("HomeTimeVisited")
visitor_HomeDateVisited=visitor("HomeDateVisited")
visitor_username=visitor("username")
visitor_userID=visitor("userID")

%>
<a href="javascript:popup(<%=visitor_userID%>);"><img border="0" ALT="Information om <%=visitor_username%>" src="/images/icons/info.gif"></a>

<a class="menu" <%=linkmessage%> href="view.asp?userID=<%=visitor_userID%>">
<%
If Len(visitor_username) > 5 Then
    Response.Write Left(visitor_username, 5) & ".."
Else
    Response.Write visitor_username
End If%>
</a> 
&nbsp;<%=visitor_HomeDateVisited%>&nbsp;<%=visitor_HomeTimeVisited%><br /> 
<%visitor.movenext:loop%>
```

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

## #28 — WebbisNet, 2005-11-07T23:04Z

Resultat av testkoden

```
userID:3:1
username:200:Webbisen
HomeDateVisited:133:2005-11-08
HomeTimeVisited:134:
 Webbi..  2005-11-08 
userID:3:1
username:200:Webbisen
HomeDateVisited:133:2005-11-07
HomeTimeVisited:134:2005-11-08
 Webbi..  2005-11-07 2005-11-08
userID:3:1
username:200:Webbisen
HomeDateVisited:133:2005-11-07
HomeTimeVisited:134:2005-11-08
 Webbi..  2005-11-07 2005-11-08
userID:3:1
username:200:Webbisen
HomeDateVisited:133:2005-11-07
HomeTimeVisited:134:2005-11-08
 Webbi..  2005-11-07 2005-11-08
userID:3:1
username:200:Webbisen
HomeDateVisited:133:2005-11-07
HomeTimeVisited:134:2005-11-08
 Webbi..  2005-11-07 2005-11-08
```

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

## #29 — WebbisNet, 2005-11-07T23:08Z

Fick Type mismatch på antalKillar-raden

objConn.Execute("SELECT COUNT(\*) as UserCount,COUNT(CASE WHEN Sex='M' THEN 1 ELSE NULL END) as MaleCount,COUNT(CASE WHEN Sex='F' THEN 1 ELSE NULL END) as FemaleCount FROM tblUsers")

antalKillar=Cint(rs("MaleCount")/rs("UserCount")\*100)
antalTjejer=Cint(rs("FemaleCount")/rs("UserCount")\*100)

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

## #30 — emission, 2005-11-07T23:13Z

Det vore fint om du skapade ett recordset också... ;)

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

## #31 — WebbisNet, 2005-11-07T23:20Z

är trött, ska upp kl 05....jobb imorrn

med
set rs=objConn.Execute("SELECT COUNT(\*) as UserCount,COUNT(CASE WHEN Sex='M' THEN 1 ELSE NULL END) as MaleCount,COUNT(CASE WHEN Sex='F' THEN 1 ELSE NULL END) as FemaleCount FROM tblUsers")

if rs.eof then
response.write "Inga poster"
else
do until rs.eof
antalKillar=Cint(rs("MaleCount")/rs("UserCount")\*100)
antalTjejer=Cint(rs("FemaleCount")/rs("UserCount")\*100)
rs.movenext: loop
end if

får jag iaf
 Killar: 5 (100%)
Tjejer:

ADODB.Field error '80020009'

Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.

/stats.asp, line 0 

Hoppas vi löser allt imorrn kväll , sov gott så länge emission och tack för kvällens hjälp så försöker vi imorrn kväll

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

## #32 — emission, 2005-11-07T23:29Z

Ett sista försök

```
Set visitor=objConn.Execute("SELECT DISTINCT userID, username, HomeDateVisited, CAST(HomeTimeVisited as varchar(20)) as HomeTimeVisited FROM tblusers_visitors INNER JOIN tblUsers ON tblusers_visitors.HomeVisitorID = tblUsers.userid WHERE HomeUserId="& request("userID") &" ORDER BY ID DESC limit 5")
```

Om det fortfarande inte fungerar så rekommenderar jag att du bygger om tabellen så att det bara finns en kolumn (HomeDateTimeVisited?) där du lagrar tidpunkten som en komplett DATETIME, dvs. med både datum och tid.

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

## #33 — WebbisNet, 2005-11-08T16:58Z

kan du tänka dig att det var så enkelt som att ändra datatyperna date och time i db till text :-)

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

## #34 — WebbisNet, 2005-11-08T16:59Z

> **WebbisNet skrev:**
>
> kan du tänka dig att det var så enkelt som att ändra datatyperna date och time i db till text :-)

Hur ska vi fixa denna del med?
set rs=objConn.Execute("SELECT COUNT(\*) as UserCount,COUNT(CASE WHEN Sex='M' THEN 1 ELSE NULL END) as MaleCount,COUNT(CASE WHEN Sex='F' THEN 1 ELSE NULL END) as FemaleCount FROM tblUsers")

if rs.eof then
response.write "Inga poster"
else
do until rs.eof
antalKillar=Cint(rs("MaleCount")/rs("UserCount")\*100)
antalTjejer=Cint(rs("FemaleCount")/rs("UserCount")\*100)
rs.movenext: loop
end if

får jag iaf
Killar: 5 (100%)
Tjejer:

ADODB.Field error '80020009'

Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.

/stats.asp, line 0

och sen strular den här funktionen
Function alder(intAlder) 
alder = Left(FormatNumber(DateDiff("y", intAlder, Date())/365.2375),4)
End Function

jag får
Type mismatch: 'FormatNumber' 
på en sida medan den kan funka på en annan sida

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

## #35 — emission, 2005-11-08T18:18Z

> **WebbisNet skrev:**
>
> kan du tänka dig att det var så enkelt som att ändra datatyperna date och time i db till text :-)

Ja, det kan jag tänka mig. Det var helt klart Time-datatypen som spökade. En DATETIME kan vara lämplig, om du vill göra datumberäkningar direkt i databasen.

> **WebbisNet skrev:**
>
> Hur ska vi fixa denna del med?
> set rs=objConn.Execute("SELECT COUNT(\*) as UserCount,COUNT(CASE WHEN Sex='M' THEN 1 ELSE NULL END) as MaleCount,COUNT(CASE WHEN Sex='F' THEN 1 ELSE NULL END) as FemaleCount FROM tblUsers")
> 
> if rs.eof then
> response.write "Inga poster"
> else
> do until rs.eof
> antalKillar=Cint(rs("MaleCount")/rs("UserCount")\*100)
> antalTjejer=Cint(rs("FemaleCount")/rs("UserCount")\*100)
> rs.movenext: loop
> end if
> 
> får jag iaf
> Killar: 5 (100%)
> Tjejer:
> 
> ADODB.Field error '80020009'
> 
> Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.
> 
> /stats.asp, line 0

Du behöver ingen loop, eftersom du bara får tillbaka en rad från databasen.

Det verkar som om du försöker hämta värden från rs, efter dessa rader.

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

## #36 — WebbisNet, 2005-11-08T18:23Z

> **emission skrev:**
>
> Ja, det kan jag tänka mig. Det var helt klart Time-datatypen som spökade. En DATETIME kan vara lämplig, om du vill göra datumberäkningar direkt i databasen.
> 
> 
> 
> 
> Du behöver ingen loop, eftersom du bara får tillbaka en rad från databasen.
> 
> Det verkar som om du försöker hämta värden från rs, efter dessa rader.

Fick till statistiken med, hur skriver man en åldersfunktion som passar till alla rs och inte bara vissa som på min sida :-)

den jag har funkade utmärkt i access men inte nu i MySQL

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

## #37 — emission, 2005-11-08T19:22Z

Vad innehåller intAlder? Variabelnamnet indikerar att det är en "int", men det är väl ett datum?

```
Function alder(fodelsedatum)
    datDatum=cdate(fodelsedatum)
    intAlder= DateDiff("yyyy", datDatum, Date())
    If Date() < DateSerial(Year(Date()), Month(datDatum),Day(datDatum)) Then
        intAlder= intAlder- 1
    End If
    alder= intAlder
End Function
```

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

## #38 — WebbisNet, 2005-11-08T19:48Z

Strular bara på startsidan där jag visar födelsedagar, alla andra funkar med den funktionen

Set bday=objConn.Execute("Select \* From tblUsers where persnr="& varDate &" ")
\<%=alder(bday("persnr"))%\>

Felmeddelande
Microsoft VBScript runtime error '800a005e' 

Invalid use of Null: 'cdate' 

/include/functions.asp, line 35

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

## #39 — @nders, 2005-11-08T19:58Z

Då får du undvika att köra funktionen om det är sparat NULL i fältet.

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/137139-göra-join-utan-relationer/page2  
Föregående sida: https://www.webforum.nu/amne/databaser-sql/137139-göra-join-utan-relationer.md
