php - 从多个表中选择然后加入

标签 php mysql

我是新来的,我希望我正确地提出了我的问题: 我正在尝试在论坛数据库上实现搜索。 我有“问题”表和“答案”表(它们都通过“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/

相关文章:

php - 如何使用 'LIKE' where 和 '%' 进行搜索操作来编写 SQL 'OR' 查询?

php - mysql_connect 上的 Laradock 错误

php - 在 Eloquent Model Observer 中使用 Request

mysql - 更新 double 值,但不高于 x 值?

php - WordPress $wpdb->get_results 即使为空也会返回日期

sql - MySQL:对多个字段的唯一约束

php - MySQL:喜欢和第一个字符

PHP/MySQL - 显示一年中所有星期一的日期列表

mysql - Erlang Emysql 准备好的查询和常规查询之间的编码差异

PHP 我应该在 ob_start 之后使用 ob_clean