Есть таблица с картинками
CREATE TABLE `ProductPhoto` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`path` varchar(255) DEFAULT NULL,
`productId` int(11) unsigned DEFAULT NULL,
`position` int(11) DEFAULT NULL COMMENT 'позиция картинки в списке изображений товара',
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=23376 DEFAULT CHARSET=utf8;
К одному продукту относятся много картинок, но не у всех продуктов выставлена позиция - она может быть у всех картинок продукта NULL, может быть 1 позицией (могут встречаться с другими позициями в рамках одного продукта) А как отобразить path первой картинки продукта, при этом сделав проверку - если он есть - отдать, в противном случае вернуть картинку с наименьшим id? единственно что пришло в голову так это
SELECT p.* ,
(SELECT
CASE
WHEN (SELECT COUNT(*) FROM ProductPhoto WHERE productId = p.id AND position = 1)
THEN (SELECT path FROM ProductPhoto WHERE productId = p.id AND position = 1)
ELSE (SELECT path FROM ProductPhoto WHERE productId = p.id ORDER BY id LIMIT 1)
END) AS `photo`
FROM Product p LIMIT 15
Заложено ли в синтаксисе SQL более легковесные конструкции языка, позволяющие сделать ту же логику с меньшим количеством обращений, вычислений ?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Проектируем блочный визуальный конструктор сайтовСервер будет отдавать размеченный готовый HTML блоков, но весь визуальный интерфейс, все...
Имеется форма и нужно её отправить без button и input использую (a)Почему без? Ломаются стили
Уже несколько лет не верстал email-писем, изменилось ли что-нибудь? Мы по прежнему верстаем на таблицах, а стили – инлайним? Я пытался найти статистики...
Есть таблица, на предпоследней строке 3 ячейки, на последней 2: фотоПодскажите пожалуйста, как мне сделать выравнивание последней строки по центру,...