我有两个如下表
图像表
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/