webForumDet fria alternativet

en inner join

Databaser & SQLur Databashanterare & SQL

14 svar · 312 visningar · startad av LR^evil.sid

Medlem sedan maj 2002560 inlägg
Frågan#1

Jag kanske bara är trött och inte ser problem där det inte finns men jag kan inte plocka ut så första posten blir forumtråden (ursprungsinlägget) och resterande blir övriga inlägg ur den andra tabellen - forumposts.

forumthreads
¯¯¯¯¯¯¯¯¯¯¯
id ( auto-increment )
usr
title
post
quote
status
pdate
edate
locked
moved
ip
referer
accessed

forumposts
¯¯¯¯¯¯¯¯¯
id
usr
title
post
postdate

usrs
¯¯¯¯
id ( auto-increment )
usr
pwd
home
eml
showeml
name
showname
cty
ava
posts
sign
regdate

Hur skall jag göra en inner join för att få med alla poster i forumposts som har samma id som forumthreads id och samtidigt få med rätt användare till tråden och de olika inläggen. Om det går?

Medlem sedan dec. 200012 464 inlägg
#2
select * 
  from forumthreads ft, 
          forumposts fp,
          usrs u
where ft.id = fp.id
    and fp.usr = u.id

Flyttas från ASP till sql.

Medlem sedan maj 2002560 inlägg
#3

Sorry, med det blev inte som jag ville ha det. Har testat ett annat upplägg (som ger samma resultat, när jag tänker efter.)

	sql = "select * from forumthreads ft " & _
	      "inner join forumposts fp on ft.id = fp.id " & _
	      "left outer join usrs u on ft.usr = u.id " & _
	      "order by fp.pdate asc"

men då är problemet att ft.title och ft.post blir en del av posterna i fp.
ft.title och ft.post skall vara den första raden i rs.getrows() medan fp.title och fp.post skall vara resten av raderna. Tror det blev rätt. : )

Den första posten i recordset skall vara trådens namn med trådens inlägg, datum och användare. Detta ligger i tabellen "forumthreads". Den andra posten i recordset skall vara första posten i tabellen "forumposts".

Hur skall jag göra för att åstakomma detta detta?

Tror jag är tydligare i detta inlägg än det förra. Man kan ju alltid hoppas.

[edit] Måste jag inte använda mig av någon slags OR mot ett värde som är unikt i de båda tabellerna för att lyckas med det?

Medlem sedan dec. 200012 464 inlägg
#4

Du får nog använda union i så fall

select ft.id,ft.title,ft..post,u.usr,pdate
   from forumthreads ft, usr u
  where ft.usr = u.usr
union all
select fp.id, fp.title,fp.post,u.usr,postdate
from forumposts fp, usr u
where fp.usr = u.usr
order by ft.id,pdate
Medlem sedan maj 2002560 inlägg
#5
	sql = "select ft.tid, ft.title, ft.post, u.usr, ft.pdate " & _
	      "from forumthreads ft, usr u " & _
	      "where ft.usr = u.id " & _
	      "union all " & _
	      "select fp.tid, fp.title, fp.post, u.usr, fp.pdate " & _
	      "from forumposts fp, usr u " & _
	      "where fp.usr = u.id " & _
	      "order by ft.tid, pdate"

ger följande meddelande:

[TCX][MyODBC]You have an error in your SQL syntax near
'union all select fp.tid, fp.title, fp.post, u.usr, fp.pdate from
forumposts fp, ' at line 1
Medlem sedan dec. 200012 464 inlägg
#6

Vilken version av Mysql har du? Stödet för union är ganska nytt.

Medlem sedan maj 2002560 inlägg
#7

Under variables i winmysqladmin hittade jag version: 3.23.52-nt

Kan det vara det du syftar på och vilken version behöver jag för att union skall fungera?

Medlem sedan dec. 200012 464 inlägg
#8

Union finns i 4.0.

Medlem sedan maj 2002560 inlägg
#9

Och var kan jag finna den? på https://www.mysql.com hittade jag bara v3.23.54

[edit] Glöm det. Jag hittade den...

Medlem sedan dec. 200012 464 inlägg
#10

4.0 är fortfarande i teststadiet. Den finns under downloads.

Du kanske kan tänka dig att designa om tabellerna lite, så att du lagrar alla inlägg i forumposts, alltså även det första i varje tråd? I så fall skulle du bara behöva slå i den tabellen.

Medlem sedan maj 2002560 inlägg
#11

Nja, jag är rätt nöjd med upplägget som det är.

Är det inte bättre att skilja på frågor och svar? När det blivit ett gäng frågor/svar så kommer det ju ta längre tid att hämta frågorna/svaren om de ligger i samma tabell.

Medlem sedan maj 2002560 inlägg
#12

Btw... fungerar limit och isf från vilken version?

Medlem sedan juni 200032 967 inlägg
#13

Limit fungerar, sedan länge.

mvh,

Medlem sedan maj 2002560 inlägg
#14

Så trevligt, tack skall ni ha

Medlem sedan maj 2002560 inlägg
#15

Well, intet nytt som inte för problem med sig.

Har upgraderat/bytt eller vad man nu skall kalla det. Jag har inte ändrat på någon kod sedan installationen och får nu felmeddelandet:

[TCX][MyODBC]Access denied for user: 'admin@127.0.0.1' (Using password: YES)

Har det blivit någon ändring i hur man skall koppla databasen?

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