Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Joinsatser

Postades av 2004-05-02 13:29:58 - Stefan Ekström, i forum asp - allmänt, Tråden har 8 Kommentarer och lästs av 1386 personer

Jag har en databas med två tabeller till mitt community. Tabell 1 tblUsers innehåller all grundläggande info om användaren och tabell 2 tblUsers_info innehåller presentation och bild på användaren. Båda tabellerna har en relation, userID till userID. Det jag vill är att kunna koppla rätt rad itabell 2 till rätt rad i tabell 1. Det vill säga, en bild och/eller presentation för användaren på rad 3 i andra tabellen ska läggas till i rad 3 på användaren i rad 1...rätt info till rätt person.

Den SQL jag får från Access
SELECT tblUsers.userID, tblUsers_info.* FROM tblUsers INNER JOIN tblUsers_info ON tblUsers.userID = tblUsers_info.userID visar en bild, men det är samma bild för alla användare, så hur ska jag utforma WHERE-satsen???


Svara

Sv: Joinsatser

Postades av 2004-05-02 13:53:52 - Andreas Hillqvist

I detta fall ser jag inget behov av en join. eftersom deras gemensamma nyckel, UserId är känd.

Du hämtar bara informationen direkt från tblUsers_info tabellen:
<code>
strSQL = "SELECT tblUsers_info.*" & vbCrLf & _
"FROM tblUsers_info" & vbCrLf & _
"WHERE tblUsers_info.userID = " & UserId
</code>
Om du skall hämta informatione från bägge tabellen eller listar fler än en användare, har du nytta av en join:
<code>
strSQL = "SELECT tblUsers.*, tblUsers_info.*" & vbCrLf & _
"FROM tblUsers LEFT JOIN tblUsers_info ON tblUsers.userID = tblUsers_info.userID" & vbCrLf & _
"WHERE tblUsers.userID = " & UserId
</code>
Jag föredrar personligen Left Join före Inner join. Därför att en Left join tar med sig poster som saknar poster i joinad tabell.

Ofta är det så att man använder joins för att slå upp information. Jag vill t.ex. slå upp en kund från en order post. Det är nformationen i ordern jag är intreserad av. Men om ordern saknar kund. Kanske glömt ange en kund(tblOrder.OrderKundId = Null) eller så är kunden borttagen(värdet i tblOrder.OrderKundId motsvarar inte någon post i fältet KundId i tabellen tblKundermed).

En Inner join fråga kommer då inte retunera dessa ordrar. Vilket jag anser vara ett datamässigt fel.

Däremot retunerar en Left Join även dessa ordrar.


Svara

Sv: Joinsatser

Postades av 2004-05-02 15:36:59 - Stefan Ekström

När jag använder Set picture=objConn.Execute("SELECT tblUsers.*, tblUsers_info.* FROM tblUsers LEFT JOIN tblUsers_info ON tblUsers.userID = tblUsers_info.userID WHERE tblUsers.userID ="& UserId &"")

får jag

Microsoft JET Database Engine (0x80040E14)
Syntaxfel (operator saknas) i frågeuttrycket 'tblUsers.userID ='.
/Artiklar/Login/include/functions.asp, line 61

och med din kod får jag

Kompileringsfel i Microsoft VBScript (0x800A0409)
Oavslutad strängkonstant
/Artiklar/Login/include/functions.asp, line 62, column 19
"FROM tblUsers_info


Svara

Sv: Joinsatser

Postades av 2004-05-02 15:44:36 - Andreas Hillqvist

Det beror på att variablen UserId är tom. Du måste tilldela den ett värde.


Svara

Sv: Joinsatser

Postades av 2004-05-02 15:46:38 - Markus Jarderot

Andreas kod fuck felmeddelande för att han (som felmeddelandet säger) glömt en "
Rätt ska vara:
<code>
strSQL = "SELECT tblUsers_info.*" & vbCrLf & _
"FROM tblUsers_info " & vbCrLf & _
"WHERE tblUsers_info.userID = " & UserId
</code>


Svara

Sv: Joinsatser

Postades av 2004-05-02 15:54:57 - Stefan Ekström

Vad är det för operator som saknas?

Microsoft JET Database Engine (0x80040E14)
Syntaxfel (operator saknas) i frågeuttrycket 'tblUsers_info.userID ='.
/Artiklar/Login/include/functions.asp, line 61

när jag har

("SELECT tblUsers_info.*" & vbCrLf & _
"FROM tblUsers_info " & vbCrLf & _
"WHERE tblUsers_info.userID = " & UserId)


Svara

Sv: Joinsatser

Postades av 2004-05-02 16:27:07 - Andreas Hillqvist

Tack MizardX. Märkte inte att jag missat det.
Har rättat mitt tidigare inlägg.


Svara

Sv: Joinsatser

Postades av 2004-05-02 16:31:43 - Andreas Hillqvist

Lite missvisande felmeddelande. Vad som saknas är ett värde efter likamed tecknet. Som sagt. Kontrollera att UserId innehåller ett tal.

T.ex. :
<code>
Dim strSQL
Dim lngUserId

lngUserId = "" & Request.QueryString("UserId")

If IsNumeric(lngUserId) Then
lngUserId = CLng(lngUserId)

strSQL = "SELECT tblUsers.*, tblUsers_info.*" & vbCrLf & _
"FROM tblUsers LEFT JOIN tblUsers_info ON tblUsers.userID = tblUsers_info.userID" & vbCrLf & _
"WHERE tblUsers.userID = " & lngUserId
Else
Response.Write "Ange ett värde för parametern UserId. T.Ex. DinSida.ASP?UserId=123"
End If
</code>


Svara

Sv: Joinsatser

Postades av 2004-05-02 17:03:22 - Stefan Ekström

Tack för all hjälp, jag hade ju varit så blåst så att jag inte hade en join redan vid valideringen. Nu kan jag ha en session vid valideringen så att man kan rätt bild på sin egna sida


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 786
27 960
271 761
5 879
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies