我有3个表:Quote,hashtag和user。
如下:
表格引用
Quote | user | Hashtags
hello world #greet | 1 | ,1,3
this is a #quote#this | 2 | ,2,4
表格标签
id | hashtag
1 | greet
2 | quote
3 | hello
4 | this
表用户
id | username
1 | john
2 | michael
我想要做的是使用INNER JOIN编写一个SQL查询,使用给定的标签来获取引号(使用每个引号的用户名)。
例如:我有标签:“#greet”,我想在这个标签下得到引号..我必须做这样的事情:
SELECT
quo.quote,
usr.username,
hash.hashtag
FROM
quote as quo
INNER JOIN
user as usr
INNER JOIN
hashtag as hash
ON
usr.id=quo.user
AND
hash.id LIKE '%,quo.hashtags,%'
AND
hash.id = :givenHashtag
正如您在SQL示例中所看到的,我想检查hashtag id是否包含在quote hashtags varchar中。使用LIKE '%,x,%'
问题是,在这里,我不知道如何将%..%
与quo.hashtag列的名称一起使用。
请注意,我的工作基于MySQL / PHP
答案 0 :(得分:4)
就像你现在看到的那样,这只会让你感到头痛。规范化您的数据库。创建一个与主题标签和引号相关的新表。
quote_tags
-----------
quote_id
hashtag_id
然后,您可以从引用表
中删除hashtags列