0
:MySQL сравнить два первых слова produst и дать самой низкой цене базы данных
id name price
1 apple iphone 500
2 apple iphone 300
3 apple iphone 250
4 apple iphone 400
5 nokia xl 300
6 nokia xl abc 200
7 nokia xl 250
- я хочу показать продукт с самой низкой ценой.
- Если продукт состоит из более чем двух слов, он должен группироваться по первым двум словам и давать продукт с самой низкой ценой.
- вывод должен показывать идентификатор, имя и цену.
мои запросы:
CREATE FUNCTION SPLIT_STR(
x VARCHAR(255),
delim VARCHAR(12),
pos INT
)
RETURNS VARCHAR(255)
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
delim, '');
SELECT mt.*,TRIM(CONCAT(SPLIT_STR(`name`, " ",1)," ",SPLIT_STR(`name`, " ",2))) as shrt
FROM items mt INNER JOIN
(
SELECT ID, MIN(price) MinPrice,TRIM(CONCAT(SPLIT_STR(`name`, " ",1)," ",SPLIT_STR(`name`, " ",2))) as shrt
FROM items
GROUP BY shrt
) t ON shrt = t.shrt AND mt.price = t.MinPrice
выход:
id name price shrt
3 apple iphone 250 apple iphone
6 nokia xl abc 200 nokia xl
7 nokia xl 250 nokia xl
выход Желание:
id name price shrt
3 apple iphone 250 apple iphone
6 nokia xl abc 200 nokia xl
что является SHRT в нужной таблице ?? –
не нужно отображать стрит. i olny хотят отображать идентификатор, имя и цену. –
Возможно, вам следует пересмотреть структуру базы данных, создать таблицы типа «бренд», «модель» и т. Д. И добавить отношения между ними? Гораздо проще выполнять запросы, не требуя сложных. Разве это не базы данных? – candle