1

引用、ハッシュタグ、ユーザーの 3 つのテーブルがあります。

次のように:

表の見積もり

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 の例でわかるように、ハッシュタグ ID が引用ハッシュタグ varchar に含まれているかどうかを確認します。使用してLIKE '%,x,%'

%..%問題は、ここで、列 quo.hashtag の名前でを使用する方法がわからないということです。

私はMySQL/PHPに基づいて作業していることに注意してください

4

1 に答える 1

4

1 つの列に複数の値を格納しないでください。

ご覧のとおり、これは頭痛の種になるだけです。DB を正規化します。ハッシュタグと引用を関連付ける新しいテーブルを作成します。

quote_tags
-----------
quote_id
hashtag_id

次に、見積もりテーブルからハッシュタグ列を削除できます

于 2013-11-09T12:41:34.547 に答える