webForumDet fria alternativet

"Column 'forumID' in field list is ambiguous"

2 svar · 510 visningar · startad av lillebror

lillebrorMedlem sedan apr. 20041 597 inlägg
#1

Hej,

	$sqlSelect = "SELECT threadID, subject, (SELECT solved FROM tblforumthreadreply WHERE solved = 1 AND threadID = t1.threadID) AS solved, (SELECT threadreplyID FROM tblforumthreadreply WHERE solved = 1 AND threadID = t1.threadID) AS threadreplyID, content, hits, posted, posterID, forumID, (SELECT title FROM tblforum WHERE forumID = t1.forumID) AS title,
	(SELECT path FROM tblforumthreadtype WHERE threadtypeID = t1.threadtypeID) AS path,
	(SELECT filename FROM tblforumthreadtype WHERE threadtypeID = t1.threadtypeID) AS filename,
	(SELECT description FROM tblforumthreadtype WHERE threadtypeID = t1.threadtypeID) AS description,
	(SELECT username FROM tblmember WHERE memberID = posterID) AS username,
	(SELECT COUNT(t2.threadreplyID) FROM tblforumthreadreply AS t2 WHERE t2.threadID = t1.threadID) AS replynumber,
	(SELECT t2.threadreplyID FROM tblforumthreadreply AS t2 WHERE t2.threadID = t1.threadID ORDER BY t2.threadreplyID DESC LIMIT 1) AS lastthreadreplyID,	
	coalesce((SELECT DATE_FORMAT(max(t5.posted), '%Y-%m-%d %H:%i') FROM tblforumthreadreply AS t5 WHERE t5.threadID = t1.threadID) , DATE_FORMAT(posted, '%Y-%m-%d %H:%i')) AS lastpost,
	coalesce((SELECT (SELECT t8.username FROM tblmember AS t8 WHERE t8.memberID = t5.posterID) FROM tblforumthreadreply AS t5 WHERE t5.threadID = t1.threadID ORDER BY t5.posted DESC LIMIT 1), (SELECT username FROM tblmember WHERE memberID = posterID)) AS usernamelastreply,
coalesce((SELECT t5.posterID FROM tblforumthreadreply AS t5 WHERE t5.threadID = t1.threadID ORDER BY t5.posted DESC LIMIT 1), posterID) AS posterIDlastreply
	FROM tblforumthread AS t1, tblforum AS t10
	WHERE t1.forumID = t10.forumID AND t10.usergroupID = ".$inline." AND t10.visible = 1
	ORDER BY lastpost DESC LIMIT 0,5";

Jag får ett fel i hela min SQL-sats när jag lägger till:

**tblforum AS t10

WHERE t1.forumID = t10.forumID AND t10.usergroupID = ".$inline." AND t10.visible = 1**

Symptomen är "Column 'forumID' in field list is ambiguous"

Det jag försöker åstadkomma är följande:

I mitt forum tillhör användare olika användargrupper och kan se olika forumsektioner. Denna SQL-sats presenterar de fem senaste inläggen gjorde i samtliga forum. Nu upptäckte jag när en person hade postat ett inlägg i ett "dolt" forum att det presenteras på denna senaste 5-lista. Detta vill jag förhindra.

I tblforum har jag fältet visibile som antingen är 1 (synligt) eller 0 (dolt) samt fältet usergroupID som talar om vilken behörighet en användare behöver för att kunna ta del av det som står i forumet. Nu får jag helt enkelt inte till det i WHERE-satsen i SQL-frågan ovan.

Någon som kan se vad som är fel. Felmeddelandet förstår jag vad som menas med men jag får ändå inte till det :OO

Peter SMedlem sedan dec. 20025 483 inlägg
#2

Det innebär att 'forumID' (i 'select forumID...') finns i fler än en tabell, så DBMS vet inte vilken av dem du menar. Lösningen torde vara att prefixa kolumnnamnet med t1 eller t10.

:)

lillebrorMedlem sedan apr. 20041 597 inlägg
#3

Det löste förvisso mitt problem men jag trodde att SQL kände av att man inte angett något ALIAS så att den per automatik utgick ifrån att den tillhörde huvudsatsen vilket den i själva verket gjorde.

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