在以下声明中,我试图从数据库中检索推文及其作者信息。我还想检索与这些推文相关的主题标签(换句话说,在那些推文中提到)。
select Tweet.Label, Tweet.TDate, Author.Lable, Author.ALink, Tweet.TLink, Tweet.ID as TID
from Tweet, Author
where Tweet.ID IN
(select TweetID from TweetMention where MentionID IN
(select ID from Mention where Label = 'Cr7Prince4ever'))
AND Author.ID = Tweet.AuthorID
UNION
select Label, HLink
from Hashtag
where ID IN
(select HashID from TweetHashs where TweetID = TID)
除了如何在Tweet和Hashtag之间建立链接外,一切正常。我想首先检索推文及其作者,并根据检索到的推文检索这些推文中写的主题标签。目前,我无法解决的错误是在where子句where TweetID = TID
的第二个select语句中。我试图让第二个语句根据第一个语句中检索到的推文ID获取推文ID,但它不起作用。
答案 0 :(得分:0)
您的查询存在许多问题,无法使用。
也许您正在寻找这样的查询:
select Tweet.Label,
Tweet.TDate,
Author.Lable,
Author.ALink,
Tweet.TLink,
Tweet.ID,
Hashtag.Label,
Hashtag.HLink
from Tweet
inner join Author
on Tweet.AuhtorID = Author.ID
left join TweetHashs
on TweetHashs.TweetID = Tweet.ID
left join Hashtag
on Hashtag.ID = TweetHashs.HashID
where Tweet.ID IN
( select TweetID
from TweetMention
where MentionID IN
( select ID
from Mention
where Label = 'Cr7Prince4ever'
)
)
注意: TweetHashs 的拼写似乎不对,但这就是你说的。
上述查询将返回同一条推文的多个结果,因为它会在单独的行中列出推文的每个哈希值。如果您希望每条推文只有一个结果,并且在一个以逗号分隔的列表中连接其哈希值,则可以将group_concat
与group by
一起使用:
select Tweet.Label,
Tweet.TDate,
Author.Lable,
Author.ALink,
Tweet.TLink,
Tweet.ID,
group_concat(Hashtag.Label) labels,
group_concat(Hashtag.HLink) links
from Tweet
inner join Author
on Tweet.AuhtorID = Author.ID
left join TweetHashs
on TweetHashs.TweetID = Tweet.ID
left join Hashtag
on Hashtag.ID = TweetHashs.HashID
where Tweet.ID IN
( select TweetID
from TweetMention
where MentionID IN
( select ID
from Mention
where Label = 'Cr7Prince4ever'
)
)
group by Tweet.ID