MySQL A поиск, выбор нескольких строк, объединение и все в одном запросе - PullRequest
0 голосов
/ 22 ноября 2008

Сначала я выполняю поиск по тегам таблицы, в результате чего возвращаются все строки вместе с их дополнительными данными из ссылок таблицы (по которым я выполняю соединение). Теги таблицы работают так, что для автоматического _id может быть несколько строк (1 тег на строку, поэтому несколько тегов - это несколько строк).

Что я хочу сделать, это вместо того, чтобы просто возвращать несколько строк, которые соответствуют auto _id и query. Я хочу вернуть каждый тег для каждого найденного auto_id в 1 строку (некоторую форму, отличную, но в которой все теги запятые разделены в 1 поле), следовательно, group_concat (который, очевидно, не работает в данный момент - i ' мы добавили его как псевдо).

SELECT ta.auto_id, li.address, li.title, GROUP_CONCAT(SELECT tag FROM tags WHERE auto_id = ta.auto_id)
FROM `tags` AS ta
JOIN
links AS li
ON ta.auto_id = li.auto_id
GROUP BY ta.tag
WHERE ta.user_id = 1
AND (ta.tag LIKE '%query%')

Надеюсь, я ясно изложил свою точку зрения.

Большое спасибо,

Ice

1 Ответ

1 голос
/ 22 ноября 2008

Если я понимаю, о чем вы спрашиваете, что-то вроде этого должно сработать:

SELECT ta.auto_id, li.address, li.title, GROUP_CONCAT(ta.tag) -- Get a comma separated list of all the tags
FROM tags AS ta
INNER JOIN links AS li ON ta.auto_id = li.auto_id
WHERE ta.user_id = 1
AND ta.tag LIKE '%query%'
GROUP BY li.id -- Group by links id, so you get one row for each link, which contians a list of tags
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...