我是新来的,我希望我正确地提出了我的问题: 我正在尝试在论坛数据库上实现搜索。 我有“问题”表和“答案”表(它们都通过“id_question”字段相关)。我还有也相关的“建议”表和“评论”表。 此外,我还有“个人资料”表,它与我之前通过“profile_id”字段提到的每个表相关,该个人资料表保存有关用户的信息。
我想在我之前提到的所有四个表中的特定字段(“主题”、“描述”...)上实现广泛搜索,并显示这些字段和撰写帖子的用户的信息。 我真的把这事搞砸了。 现在我有 4 个查询(每个表),每个查询都与配置文件表进行连接。 您知道更好的方法吗?
谢谢!
最佳答案
您可以使用 INNER JOINS 来做到这一点。我建议从一些简单的内部联接开始,并构建更具包容性的查询并联接更多表。这完全取决于你想要得到什么,真的。尽可能准确地返回您想要的信息。
这是一个简单的示例和我所做的假设:
假设以下情况 表:主键*、外键#、其他列
questions: id_questions*, topic, description, profile_id#
answers: id_answers*, id_questions#, topic, description, profile_id#
suggestions: id_suggestions*, topic, description, profile_id#
comments: id_comments*, topic, description, profile_id#
user: profile_id*, name, details
KEYWORD:替换为您的关键字或短语
在问题和答案中查找关键字
SELECT * FROM questions q
INNER JOIN answers a
ON q.profile_id = a.profile_id
WHERE topic LIKE '%KEYWORD%'
OR description LIKE '%KEYWORD%';
获取在问题和答案表中使用关键字的用户的用户个人资料:
SELECT u.* FROM users u
INNER JOIN answers a
ON u.profile_id = a.profile_id
INNER JOIN questions q
ON q.profile_id = u.profile_id
WHERE topic LIKE '%KEYWORD%'
OR description LIKE '%KEYWORD%';
希望这有帮助。
编辑:格式化。
关于php - 从多个表中选择然后加入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24086659/