У ID_PRODUCT несколько изображений в столбце PICTURE_BIG, соответственно занимает несколько строк в таблице(у которых идет один ID_PRODUCT), мне необходимо вытянуть только первое изображение в столбце PICTURE_BIG каждого ID_PRODUCT чтобы перенести в другую таблицу.
мне по хорошему надо переделать таблицу изображений с товарами, создать таблицу с изображениями для основного вида карточки товара, и другую таблицу для внутреннего отображений остальных фото товара разного ракурса, поэтому ищу инфу как можно вытянуть отдельные фотографии с таблицы БД
По-хорошему вам надо просто в таблицу добавить поле "Главная картинка - flag_main" и у вот таких первых картинок проставить в нем 1 таким запросом: Код (Text): CREATE TEMPORARY TABLE tt SELECT id, (SELECT t2.id FROM tablePictures t2 WHERE t2.ID_PRODUCT = t1.ID_PRODUCT ORDER BY t2.id LIMIT 1 ) as id_main FROM tablePictures; UPDATE tablePictures tp, tt tt SET flag_main = CASE WHEN tt.id_main = tp.id THEN 1 ELSE 0 END WHERE tp.id = tt.id После этого при добавлении картинок нужно правильно выставлять flag_main либо периодически выполнять этот же запрос. После этого вытаскивать главные картинки станет гораздо проще простым фильтром по полю flag_main. PS Скрипт состоит из двух запросов, обычно CMS сплитят его на два. Если нет, выполняйте один за другим внутри одного коннекта/транзакции.
извиняюсь, не до конца понял ваш код, CREATE TEMPORARY TABLE tt -создаем временную таблицу tt, далее выбираем ид SELECT id, а вот в круглых скобках не до конца уловил суть, (Выбрать t2 .id, из tablePictures t2 где t2.ID_PRODUCT = t1.ID_PRODUCT сортируя по t2. id лимит 1 ) задаем столбцу имя id_main из таблицы tablePictures. Как мне это применить к своей таблице pictures которая изображена на вложенном изображении? и что является первой таблицей t1.ID_PRODUCT? что то немного запутался)
1. Временная таблица имеет столько строк, сколько исходная и два поля - id исходное и id_main - код строчки основного вложения для текущего товара. Если эти id равны между собой, то значит это первое вложение, если нет - то последующие. 2. Просто апдейтим исходную таблицу. Вам нужно: 1. Поменять в запросе название tablePictures на ваше pictures. 2. Добавить в таблицу поле flag_main int unsigned и заоодно добавить индекс ID_PRODUCT+flag_main 3. Выполнить сей запрос. 4. Получать главные вложения путем SELECT * FROM pictures WHERE flag_main = 1 AND ID_PRODUCT IN (....)