MySQL多表查询成一个结果

时间:2019-06-14 06:32:42

标签: php mysql sql database

我有两个如下表

images_table

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

tags_table

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"

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

2 个答案:

答案 0 :(得分:0)

使用join

SELECT image_name, image_file, tag_name FROM images_table i
inner join tags_table t on i.id=t.image_id
WHERE image_name LIKE "%$search" and tag_name LIKE "%$search"

答案 1 :(得分:0)

您可以使用以下查询

SELECT *

FROM images_table m1,
     tags_table m2

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

您只需要在FROM部分中添加两个表,然后在它们都可以添加的条件下给它们起别名即可使用OR和AND,但这要视情况而定,如果存在1个匹配且AND,则OR会得出true仅在两个表中都有匹配项时才会评估为真