php - MySQL 多表查询成一个结果

标签 php mysql sql database

我有两个如下表

图像表

id   |  image_name   |   image_file
-----+---------------+------------------
1    |  flower       |  rose.jpg
2    |  fish         |  gold_fish.jpg
-----+---------------+----------------

标签表

tag_id   |   tag_name   |  image_id
---------+--------------+---------------
1        |    rose      |   1
2        |  red flower  |   1
3        |  redfish     |   2
4        |  aquarium    |   2
---------+--------------+------------------

当有人搜索时,我使用以下查询

SELECT * FROM images_table WHERE image_name LIKE "%$search"

但我需要显示两个表的结果。即以下查询的组合

SELECT * FROM images_table WHERE image_name LIKE "%$search"

SELECT * FROM tags_table as tags LEFT JOIN images_table as img ON img.id=tags.image_id WHERE tags.tag_name LIKE "%$search"

如何将两个结果作为单个数组/列表获取?这样我也可以实现分页。

最佳答案

您可以使用以下查询

SELECT *

FROM images_table m1,
     tags_table m2

WHERE m1.image_table LIKE '%$search' OR m2.tag_name LIKE '%$search'

您只需在 FROM 部分中添加两个表,然后在添加这两个表的 where 条件下给它们指定别名,您可以使用 OR 也可以使用 AND,但这取决于情况,如果存在 1 个匹配项,OR 将评估为 true,并且 AND仅当两个表中都匹配时才会评估 true

关于php - MySQL 多表查询成一个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56592654/

相关文章:

php - MySQL/PHP : Select file extension types simple query?

php - 在数据库中组织类数据的最佳方式是什么?

mysql - 选择哪个结果在 MySQL 结果集中排在第一位

mysql - SQL中对2个聚合字段进行操作

mysql - 如何最小化我的查询以加快我的 navicat 中的查询时间?

php - 如何将 composer 包包含到纯 php 中?

php - 从 PHP 创建 MySQL 用户和数据库

javascript - 在自动完成列表中选择时更改输入值

php - 关于重复 key 更新 - 条件 WHERE VS CASE WHEN VS IF?

sql - bigquery合并来自不同表的相同列