Выборка по перечислению через запятую - MySQL
Формулировка задачи:
Всем привет, как то можно стандатными средствами сделать данную выборку?
крайний вложенный запрос возвращает артикулы чилдов через запятую, такова особенность в текущем сайте..
т.е. запрос дает строку вида F1651,6512,G81651,FG1651, по этим артикулам в этой же таблице надо забрать id этих записей, и затем забрать id фотографий для этих элментов
и что то я зачах, как это реализовать одним запросом mysql без explode\implode в php
SELECT id FROM `images` WHERE `iditem` IN (SELECT `id` FROM `catalog` WHERE `art` IN (SELECT `childs` FROM `catalog` WHERE `id` = '4113'))
Решение задачи: «Выборка по перечислению через запятую»
textual
Листинг программы
SELECT id FROM images WHERE iditem IN ( SELECT catalog.Id FROM (SELECT childs FROM catalog WHERE id = '4113') ch CROSS JOIN catalog WHERE LOCATE(catalog.art ,ch.childs) > 0 )
Объяснение кода листинга программы
В этом коде происходит выборка из таблицы images
по значению поля iditem
. При этом значение iditem
находится с помощью вложенного запроса. Вложенный запрос сначала выбирает поле childs
из таблицы catalog
, где значение поля id
равно '4113'. Затем это поле используется в основном запросе для сравнения с полем art
таблицы catalog
. Результатом будет выборка всех записей из таблицы images
, где значение iditem
содержится в поле art
таблицы catalog
и соответствует значению '4113'.
Список элементов кода:
- SELECT id FROM images
- WHERE iditem IN (...)
- (SELECT catalog.Id FROM catalog WHERE id = '4113')
- CROSS JOIN catalog
- WHERE LOCATE(catalog.art ,ch.childs) > 0
Обратите внимание, что в этом коде используется функция LOCATE для проверки наличия подстроки в строке. Функция возвращает позицию первого вхождения подстроки в строку. Если подстрока не найдена, функция возвращает 0. Поэтому условие LOCATE(catalog.art ,ch.childs) > 0 означает, что подстрока из поля
childs
таблицыcatalog
должна быть найдена в полеart
таблицыcatalog
, и это значение должно быть больше 0 (то есть, подстрока должна быть найдена не в начале строки).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д