MySQL и LEFT JOIN c выборкой IN

nezabor
На сайте с 19.07.2010
Offline
152
551

Собственно проблема

есть в одной таблице поле со значением типа 1,2,3

это соответствует id из другой таблицы

попробовал сделать вот так, но не работает

SELECT

m_a.id,
m_a.mas_languages,
lang.id,
lang.languages
FROM
M_ankets_set AS m_a
LEFT JOIN L_languages AS lang USING (id)
WHERE
lang.id IN (m_a.mas_languages)
Чудес не бывает...
S
На сайте с 30.09.2016
Offline
469
#1

Жуть какая-то. Что хотели-то сделать?

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
nezabor
На сайте с 19.07.2010
Offline
152
#2
Sitealert:
Жуть какая-то. Что хотели-то сделать?

я вроде описал

вдаваясь в частность поле(mas_languages) в таблице M_ankets_set содержит строку с перечислением id языков из таблицы L_languages

надо получить список языков которые указаны в mas_languages

сгруппировать и вывести строкой - это уже потом сам

Оптимизайка
На сайте с 11.03.2012
Offline
396
#3

nezabor, было уже

/ru/forum/1004152

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
nezabor
На сайте с 19.07.2010
Offline
152
#4

Оптимизайка, я правильно понял, что не получится?

или я не понял?

Оптимизайка
На сайте с 11.03.2012
Offline
396
#5

nezabor, я же ответил там, как нужно делать:

WHERE FIND_IN_SET(lang.id, m_a.mas_languages) > 0

nezabor
На сайте с 19.07.2010
Offline
152
#6

Оптимизайка, Благодарю, разобрался

LEFT JOIN L_languages AS lang ON FIND_IN_SET(lang.id, m_a.mas_languages)

в итоге получилось

SELECT

m_a.id,
GROUP_CONCAT(lang.languages) AS L
FROM
M_ankets_set AS m_a
LEFT JOIN L_languages AS lang ON FIND_IN_SET(lang.id, m_a.mas_languages)
GROUP BY
m_a.id

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий