【发布时间】:2013-03-03 08:32:13
【问题描述】:
我在 MySQL 中有一个表 tbl_comments。表中有user_name、comment_id、user_likes、user_dislikes四个字段。 user_likes 和 user_dislikes 字段的类型为 VARCHAR,并且在这两个字段中有逗号分隔的用户名。
我有以下疑问:
$query = "SELECT * FROM tbl_comments WHERE comment_id=223";
我的问题是我也想通过这个查询传递用户名并得到以下输出
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 查询可以给出我想要的结果?
【问题讨论】:
-
我认为如果您在单个列中有 CSV 格式的外键列表,您的应用程序会遇到问题。我建议更改您的设计,以便您有一个新表
user_opinion,它连接from_user_id、to_user_id、type(其中类型是L 或D)。 -
其实我正在开发一个论坛。你的建议看起来很有价值。我想我应该重新设计我的数据库。您能否请我参考任何可以在这方面帮助我的好文章、教程等。因为我希望我的应用程序更高效。
-
不一定有教程可以帮助您解决这个特定问题,但是如果您按照 Andre 的建议了解数据库规范化,那肯定会有所帮助。另一方面:开发一个用于学习目的的论坛很好,但请记住,已经有许多成熟且经过良好测试的 PHP 论坛包!