我是新来的,我希望我正确地问我的问题: 我正在尝试在论坛数据库上实现搜索。 我有'问题'表和'答案'表(它们都与'id_question'字段相关)。我还有'建议'表和'评论'表也是相关的。 另外,我有'profiles'表,它与我之前提到的'profile_id'字段相关的每个表有关,这个profile表保存了用户的信息。
我想在我之前提到的所有四个表中对特定字段('主题','描述'...)实施广泛搜索,并显示这些字段以及撰写帖子的用户的信息。 我真的搞砸了。 现在我有4个查询(对于每个表),并且每个查询都使用profiles表进行连接。 你知道更好的方法吗?
谢谢!
答案 0 :(得分:0)
是的,在四个查询中执行此操作。
否则,当您尝试加入表格时,您将获得Cartesian product。
答案 1 :(得分:0)
我认为您可以尝试使用UNION。不是吗?
答案 2 :(得分:0)
您可以使用INNER JOINS执行此操作。我建议从一些简单的INNER JOINS开始,并构建您的查询以更具包容性并加入更多表。这完全取决于你真正想要得到的东西。在准确返回您想要的信息时尽可能精确。
这是一个简单的例子和我做的假设:
假设如下 table:primarykey *,foreignkey#,othercolumns
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
关键字:替换为您的关键字或词组
在问题和答案中查找关键字
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%';
希望这有帮助。
编辑:格式化。