我有两个如下表
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"
如何将两个结果作为单个数组/列表获得?这样我也可以实现分页。
答案 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仅在两个表中都有匹配项时才会评估为真