webForumDet fria alternativet

Enkel fråga om join...

ASP

15 svar · 246 visningar · startad av Lukaspojken

Medlem sedan maj 20011 312 inlägg
Frågan#1

Den vill inte riktigt...det är nåt med Joinen. Jag vill koppla ihop två tabeller med varandra...

SELECT * FROM forum f JOIN forumUpdate fup ON f.msgID = fup.msgID

------------------
Alltid lär man sig något nytt varje dag...

Medlem sedan dec. 19996 721 inlägg
#2

Det är inget fel på joinen, men du plockar bara ut kolumner från "forum" i din select-lista, så din sökning motsvarar egentligen

SELECT * FROM forum WHERE msgID IN (SELECT DISTINCT msgID FROM forumUpdate)

Du måste ta med de kolumner du vill ha från msgUpdate i select-listan.

Medlem sedan dec. 200012 464 inlägg
#3

Que?

SELECT * FROM forum f JOIN forumUpdate fup ON f.msgID = fup.msgID

innebär att alla kolumnerna från både forum och forumUpdate kommer med.

vad är problemet?

------------------
essentitia preter non sans multiplicandum

Medlem sedan juni 2001206 inlägg
#4

Testa det här, tror det ska funka:

SELECT f.*, fup.* FROM forum f JOIN forumUpdate fup ON f.msgID = fup.msgID

Du får du med alla värden från forum och forumupdate...

------------------
MVH
Harback

Medlem sedan dec. 19996 721 inlägg
#5

Du har så rätt, LarsG. Hjärnspatt.

Som sagt, vad är problemet? JOIN-klausulen är helt rätt.

Medlem sedan maj 20011 312 inlägg
#6

Så här ser frågan ut:

	m_strSQL = "SELECT f.msgId, f.msgFrom, f.msgTopic, f.msgRead, fup.msgUpdate, fup.msgUptime " & _
			"FROM forum f JOIN forumUpdate fup ON f.msgID = fup.msgID " & _
			"WHERE f.Thread_ID=0 " & _
			"ORDER BY fup.msgUpdate ASC, fup.msgUptime DESC"

Detta felmeddelande får jag

Microsoft OLE DB Provider for ODBC Drivers error '80040e14' 

[Microsoft][ODBC Microsoft Access Driver] Syntax error in FROM clause.

Förstår inte riktigt vad felet ligger nånstans?

------------------
Alltid lär man sig något nytt varje dag...

Medlem sedan dec. 19996 721 inlägg
#7

Hmm.......det ser ju bra ut det där. Skriv ut m_strSQL med response.write. Inte för att det ser ut att vara fel, men man vet aldrig.

Medlem sedan maj 20011 312 inlägg
#8

Så här ser den ut när jag skrev ut den med response.write

SELECT f.msgId, f.msgFrom, f.msgTopic, f.msgRead, fup.msgUpdate, fup.msgUptime FROM forum f JOIN forumUpdate fup ON f.msgID = fup.msgID WHERE f.Thread_ID=0 ORDER BY fup.msgUpdate ASC, fup.msgUptime DESC

------------------
Alltid lär man sig något nytt varje dag...

Medlem sedan maj 20011 312 inlägg
#9

Kan det kanske bero på att msgID i forumUpdate är av fältypen tal medan i forum är den av typen räknare...hur ändrar jag i så fall på det så att det blir korrekt...

Annars vet jag inte vad det skulle kunna vara

------------------
Alltid lär man sig något nytt varje dag...

Medlem sedan dec. 19996 721 inlägg
#10

Kan det kanske bero på att msgID i forumUpdate är av fältypen tal medan i forum är den av typen räknare

Nej...

Skumt det här, eller så har man gått och blivit blind. Får vi se lite omgivande kod?

Medlem sedan maj 20011 312 inlägg
#11
	m_strConnString = "driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\lukee\db\dni0e1o\f4xni3w.mdb") & ";password=rh10GS1;"
		
	'## -- skapa connection object och öppna upp databasen --
	Set m_objConn = Server.CreateObject("ADODB.Connection")
		m_objConn.Open m_strConnString
		
		'## -- sql-fråga för att hämta alla poster --
		'## -- denna ska du ändra så att den stämmer
		'##    med det som du vill hämta --
	m_strSQL = "SELECT ff.msgId, ff.msgFrom, ff.msgTopic, ff.msgRead, ffup.msgUpdate, ffup.msgUptime " & _
			"FROM forum ff JOIN forumUpdate ffup ON ff.msgID = ffup.msgID " & _
			"WHERE ff.Thread_ID=0 " & _
			"ORDER BY ffup.msgUpdate ASC, ffup.msgUptime DESC"

response.write m_strSQL & "<br>"

			'## -- recordset för att hämta alla poster --
			Set m_objRS = m_objConn.Execute(m_strSQL)

Felmeddelandet är på sista raden i koden ovan:

Microsoft OLE DB Provider for ODBC Drivers error '80040e14' 

[Microsoft][ODBC Microsoft Access Driver] Syntax error in FROM clause. 

/lukee/db/medlemsida/forum.asp, line 88

Koden fungerade bra innan men när jag skulle försöka ändra SQL-satsen så blev det fel.

------------------
Alltid lär man sig något nytt varje dag...

Medlem sedan maj 20011 312 inlägg
#12

Så här skrev jag och då fungerade det...:)

"FROM forum AS ff INNER JOIN forumUpdate AS ffup ON ff.msgID = ffup.msgID " & _

Höll på bli lite småtokig där ett tag...:)

------------------
Alltid lär man sig något nytt varje dag...

Medlem sedan dec. 19996 721 inlägg
#13

Se där...kanske JET/Access vill ha det så.

Medlem sedan juli 20003 825 inlägg
#14

Jag tror inte du kan skriva bara JOIN, du måste skriva ett prefix, INNER, LEFT eller RIGHT.

Kolla det!

------------------
OLR WebAdmin

Medlem sedan dec. 200012 464 inlägg
#15

Nej, man behöver inte ange typ av join, INNER är default.

Däremot kan det vara så att Jet kräver att du använder

...
from forum [b]as[/b] f
...

testa det tycker jag.

------------------
essentitia preter non sans multiplicandum

Medlem sedan juli 20003 825 inlägg
#16

Undo...

[Redigerat av Eclipse den 16 jul 2001]

268 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
132 ms — ändringar (db)