webForumDet fria alternativet
Logga in / Bli medlem

SQL-fråga

Databaser & SQL

11 svar · 323 visningar · startad av Jörgen HP

Medlem sedan feb. 20012 412 inlägg
Frågan#1

Hej!

Har en SQL-fråga som ser ut enligt följande:

m_strSQL = "SELECT Subject, req_Username, dteDate, " & _
"Svar_dteDate, Inlagg.intForumId, MessId " & _
"FROM Svar " & _
"RIGHT JOIN Inlagg " & _
"on MessId = Svar_MessId " & _
"RIGHT JOIN Profil " & _
"on AnvId = Svar_AnvId " & _
" WHERE Inlagg_AnvId = "& cint(Request.querystring("AnvId")) &"" & _
" OR Svar_AnvId = "& cint(Request.querystring("AnvId")) &"" & _
" GROUP BY MessId ORDER BY dteDate DESC"

Problemet är att den hämtar ibland poster med annat AnvId än det querystringen innehåller, vad kan det bero på?

r: skriver jag ut det blir det:

SELECT Subject, req_Username, dteDate, Svar_dteDate, Inlagg.intForumId, MessId FROM Svar RIGHT JOIN Inlagg on MessId = Svar_MessId RIGHT JOIN Profil on AnvId = Svar_AnvId WHERE Inlagg_AnvId = 2 OR Svar_AnvId = 2 GROUP BY MessId ORDER BY dteDate DESC

mvh Jörgen :)

Medlem sedan dec. 200012 464 inlägg
#2

I vilken tabell finns kolumnen AnvID?

Jag tycker att det ser ut som om du skulle behöva en union egentligen.

Medlem sedan feb. 20012 412 inlägg
#3

Hej!

AnvId finns i tabellen Profil. Jag har aldrig fått union att fungera i Mysql, tyvärr.

Profil: AnvId
Svar: Svar_AnvId
Inlagg: Inlagg_AnvId

r: aldrig stavas aldrig med 2 l

mvh Jörgen :)

Medlem sedan dec. 19996 721 inlägg
#4

Hur ser tabellerna ut?

PS.
& "" & är exakt samma sak som &
DS ;)

Medlem sedan feb. 20012 412 inlägg
#5

Hej!

Tabellstruktur:

Inlagg:

MessId int(11)
Subject varchar(100)
dteDate
Inlagg_AnvId int(11)
IntForumId tinyint(2)

Svar:

Svar_Id int(11)
Svar_MessId int(11)
IntForumId tinyint(2)
Svar_AnvId int(11)
Svar_dteDate

Profil:

AnvId int(11)
req_Username varchar(50)

mvh Jörgen :)

Medlem sedan dec. 200012 464 inlägg
#6

T.ex. om du i inlagg hittar en post som matchar inlagg_anvid = 2 så joinar du det mot messid i svar-tabellen och sedan använder du svar_anvid för att joina mot profil.
Du får då profilinfo för alla som svarat på inlägget istället.

Det är därför jag är ute efter att du behöver två frågor.

Medlem sedan feb. 20012 412 inlägg
#7

Hej!

Så du menar att jag gör en join mellan tabellerna Inlagg och Svar.

Sedan gör jag en fråga till som hämtar ut req_Username för den användaren som har ett AnvId som övernsstämmer med request.querystring("AnvId")?

r: hela funktionen går ut på att lista alla inlägg som en viss medlem har deltagit i.

mvh Jörgen :)

Medlem sedan feb. 20012 412 inlägg
#8

Hej igen!

Har du någon aning om ifall union stöds av mysql?

mvh Jörgen :)

Medlem sedan dec. 200012 464 inlägg
#9

Jo, det är två olika mängder du vill komma åt.

Nej, union finns inte i mysql.

Medlem sedan feb. 20012 412 inlägg
#10

Tack LarsG, jag får köra två frågor istället :(

mvh Jörgen :)

Medlem sedan dec. 200012 464 inlägg
#11

Det känns som om det är något skevt med din datamodell.

Varför skiljer du på inlägg och svar på det sättet?

Räcker det inte med att ha en subject-tabell där man sparar titel/ämne och till vilket forum det hör och sedan har man en tabell för alla inlägg där man har ett subjectid och sekvensnummer som primärnyckel. I så fall behöver du enbart söka i inläggstabellen i detta fall.

Medlem sedan juni 20008 205 inlägg
#12

Nej, union finns inte i mysql.

Känner mig tvungen att påpeka att det finns i mysql 4.0, och att man om ett år antagligen inte kommer kunna säga "nej, mysql stöder inte foreign key constraints, stored procedures eller subqueries". :)
http://www.mysql.com/products/mysql-4.0/index.html

253 ms totalt · 4 externa anrop · v20260731065814-full.5386d3bf
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)