簡體   English   中英

SQL查詢,用於檢查另一個表的數據

[英]SQL query that checks another table's data

對於不太復雜的SQL查詢(例如JOIN),我不太滿意,因此在這方面我一無所知。

我有三張桌子:

FORUM_Topics
FORUM_Threads
FORUM_Replies

論壇主題是最高級別。

論壇主題位於主題內。

論壇回復位於主題內。

答復不會直接說出他們所處的話題,而只是說出什么話題。 然后該線程說出什么主題。

所以看起來像這樣:

FORUM_Topics
ID = 1
Name = A topic

FORUM_Threads
ID = 1
TopicID = 1
Name = A forum thread

FORUM_Replies
ID = 1
ThreadID = 1
Name = A forum reply

如果我想查看一個主題中有多少個線程,它很簡單:

$threads = mysql_query("SELECT * FROM FORUM_Threads WHERE TopicID = $ID");

但是我如何查看一個主題中有多少回復?

select FORUM_Replies.* from FORUM_Replies
inner join FORUM_Threads on FORUM_Replies.ThreadID = FORUM_Threads.ID
where FORUM_Threads.TopicID = $ID

您可能希望同時從“答復”和“線程”獲得結果。

select FORUM_Replies.Name as ReplyName, FORUM_Threads.Name as ForumName from FORUM_Replies
inner join FORUM_Threads on FORUM_Replies.ThreadID = FORUM_Threads.ID
where FORUM_Threads.TopicID = $ID

我認為您應該使用此查詢

SELECT COUNT(*) FROM FORUM_Replies WHERE ThreadID IN (SELECT DISTINCT ID FROM FORUM_Threads WHERE TopicID = @id)

這應該夠了吧

我猜是這樣的:

SELECT
  COUNT(`forum_replies`.`name`) as `totals`
FROM
  `FORUM_REPLIES`
LEFT JOIN
  `forum_replies` ON(`forum_threads`.`topicid`=`forum_replies`.`threadid`)
LEFT JOIN
  `FORUM_THREDS` ON(`forum_topic`.`id`=`forum_threads`.`topicid`)
WHERE
  `forum_topics`.`id`="7";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM