MySQL несколько таблиц запросов в один результат - PullRequest
0 голосов
/ 14 июня 2019

У меня есть две таблицы, такие как следующие

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 голосов
/ 14 июня 2019

Вы можете использовать следующий запрос

SELECT *

FROM images_table m1,
     tags_table m2

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

, вы просто добавляете обе таблицы в части FROM и затем присваиваете им псевдоним в условии where, добавляя обе таблицы, которые вы можете использовать OR, а также ANDно это зависит от того, ИЛИ будет оценивать true, если есть 1 совпадение, и И будет оценивать true, только если в обеих таблицах есть совпадения

0 голосов
/ 14 июня 2019

Использование 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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...