webForumDet fria alternativet

Inner join probs

Databaser & SQLur Databashanterare & SQL

4 svar · 272 visningar · startad av Bjuris

Medlem sedan juli 2001514 inlägg
Frågan#1

Jag håller på att skapar ett lite mer avancerat forum då jag har lite tid över.
däremot så har jag ett problem.
Denna sql fråga fungerar fint.

Link = "SELECT forum.*, member.m_signature FROM forum"&_
" inner join member on forum.f_moderators = member.id"&_
" Order by forum.ID Desc"

Däremot när jag försöker lägga till en inner join till

Link = "SELECT forum.*, member.m_signature, Count(threads.t_forum) AS antal FROM forum"&_
" inner join member on forum.f_moderators = member.id"&_
" inner join threads on forum.id = threads.t_forum"&_
" Order by forum.ID Desc"

För att räkna hur många inlägg det finns så fungerar det inte alls
får ett 500.100 fel

felsvar:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'forum.f_moderators = member.id inner join threads on forum.id = threads.t_forum'.

Sen så är jag lite nyfiken på left, right och inner join vad är skillnaderna i dem?

Medlem sedan dec. 200012 464 inlägg
#2

Du kan inte blanda count och vanliga kolumner utan att ha en group by.

Jag skulle nog skriva den frågan som

Link = "SELECT f.*, member.m_signature,(select Count(*) 
from threads where t_forum = f.forum_id ) AS antal FROM forum f"&_
" inner join member on f.f_moderators = member.id"&_
" Order by f.ID Desc"

Annars så är access speciellt om man vill ha flera inner join, du måste ha med lite parenteser för att det lilla livet skall förstå

select * from (a inner join b on a.id = b.id) inner join c on b.id = c.id

Jag har skrivit ett längre inlägg om olika joins i SQL-forumet, så om du gör en sökning där på tex natural join så borde du hitta något.

Red/

Jag sökte själv:

http://webforum.aleborg.com/forum/showthread.php?s=&threadid=21562&highlight=natural+join

Medlem sedan juli 2001514 inlägg
#3

LarsG
När jag använder den du föreslog

Link = "SELECT forum.*, member.m_signature,(select Count(*) from threads where t_forum = forum.forum_id ) AS antal FROM forum"&_
" inner join member on forum.f_moderators = member.id"&_
" Order by forum.ID Desc"

(obs modifierad lite)

så får jag följande felmeddelande:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

Vad jag förstår så är detta ett ganska generellt felmeddelande, är det någon fnutt som jag glömt eller vad kan detta bero på?

Medlem sedan dec. 200012 464 inlägg
#4

Det felet beror (oftast) på att det är något kolumnnamn som är felaktigt.

Medlem sedan juli 2001514 inlägg
#5

:r :r
hmmm......visst du hade så rätt så rätt.........

jag bugar och bockar, tackar

140 ms totalt · 3 externa anrop · v20260731065814-full.b746b907
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)