0

tbl_commentsMySQLにテーブルがあります。user_nameテーブルには、comment_iduser_likes、の4 つのフィールドがありuser_dislikesます。およびフィールドは VARCHAR 型で、これら 2 つのフィールドにはコンマで区切られた user_name がありますuser_likesuser_dislikes

次のクエリがあります。

$query = "SELECT * FROM tbl_comments WHERE comment_id=223";

私の問題は、このクエリで user_name を渡し、次の出力を取得したいことです

1.  0 (if user_name does not exist in user_likes and user_dislikes)
2.  1 (if user_name exists in user_likes)
3.  2 (if user_name exists in user_dislikes)

希望する結果が得られる SQL クエリはどれですか?

4

2 に答える 2

0

私は、あなたがSQL Serverを使用していると思います:

SELECT *, 
CASE 
WHEN (if user_name does not exist in user_likes and user_dislikes) THEN O
WHEN (if user_name exists in user_likes) THEN 1
WHEN (if user_name exists in user_dislikes) THEN 2
END
FROM tbl_comments WHERE comment_id=223

これはおおよそ必要なものです。WHEN内の条件は用途に合わせて変更してください。しかし、'user_likes' と 'user dislikes' が実際に何を意味するのか、そしてなぜカンマ区切りのユーザー名なのか理解できません。というわけで条件はそのまま。

于 2013-03-03T08:44:37.150 に答える
0

私は自分自身の前にコンマ区切りの値を使用するという落とし穴を取りました。この件に関する良い答えは次のとおりです。データベースの列に区切られたリストを格納するのは本当に悪いことですか?

LIKE '%user_name%' を使用する必要がありますが、これは効率の観点からは良くありません。データベースの正規化を調べてみてください。

(Stackoverflow に関する私の最初の投稿:))

于 2013-03-03T09:07:55.657 に答える