powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / вывод значения в дополнительный столбец
8 сообщений из 8, страница 1 из 1
вывод значения в дополнительный столбец
    #40055854
lyashko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть две таблицы:
Код: sql
1.
`product_features`

, с колонками:
Код: sql
1.
`id`, `product_id`, `feature_id`, `feature_value_id`

и
Код: sql
1.
`feature_values_varchar`

, с колонками
Код: sql
1.
`id`, `value`


Делаю следующую выборку:
Код: sql
1.
2.
3.
4.
5.
SELECT `product_features`.`id`,`product_features`.`product_id`,`product_features`.`feature_id`,`feature_values_varchar`.`value` as `v`
FROM `product_features`
LEFT JOIN `feature_values_varchar`
ON `product_features`.`feature_value_id` = `feature_values_varchar`.`id`
WHERE `product_features`.`feature_id`=52



Как можно сделать еще одну колонку с данными из
Код: sql
1.
`feature_values_varchar`.`value`

, но уже с другим фильтром по
Код: sql
1.
`shop_product_features`.`feature_id`
...
Рейтинг: 0 / 0
вывод значения в дополнительный столбец
    #40055891
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Покажите пример данных (SQL-скриптами CREATE TABLE + INSERT INTO) и требуемый результат.
...
Рейтинг: 0 / 0
вывод значения в дополнительный столбец
    #40055894
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lyashko,

так же приджойнить таблицу
Код: sql
1.
2.
3.
4.
...
LEFT JOIN shop_product_features` as S
ON ... -- связь
WHERE ... -- условие
...
Рейтинг: 0 / 0
вывод значения в дополнительный столбец
    #40055955
lyashko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

Код: sql
1.
2.
3.
4.
5.
6.
CREATE TABLE `shop_product_features` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `product_id` int(11) NOT NULL,
  `sku_id` int(11) DEFAULT NULL,
  `feature_id` int(11) NOT NULL,
  `feature_value_id` int(11) NOT NULL)


Код: sql
1.
2.
INSERT INTO `shop_product_features`(`id`,`product_id`,`sku_id`,`feature_id`,`feature_value_id`)VALUES(1,1,1,52,4253);
INSERT INTO `shop_product_features`(`id`,`product_id`,`sku_id`,`feature_id`,`feature_value_id`)VALUES(1,1,1,49,4254);


Код: sql
1.
2.
3.
4.
5.
CREATE TABLE `shop_feature_values_varchar` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `feature_id` int(11) NOT NULL,
  `sort` int(11) NOT NULL DEFAULT 0,
  `value` varchar(255) NOT NULL)


Код: sql
1.
2.
INSERT INTO `shop_feature_values_varchar`(`id`,`feature_id`,`sort`,`value`)VALUES(4253,52,0,val1);
INSERT INTO `shop_feature_values_varchar`(`id`,`feature_id`,`sort`,`value`)VALUES(4254,49,0,val2);


Сейчас я делаю выборку так:
Код: sql
1.
2.
3.
4.
5.
SELECT `shop_product_features`.`id`,`shop_product_features`.`product_id`,`shop_product_features`.`feature_id`,`shop_feature_values_varchar`.`value` as `v`
FROM `shop_product_features`
LEFT JOIN `shop_feature_values_varchar`
ON `shop_product_features`.`feature_value_id` = `shop_feature_values_varchar`.`id`
WHERE `shop_product_features`.`feature_id`=52



Еще хочу добавить один столбец и выводить данные из того же поля
Код: sql
1.
`shop_feature_values_varchar`.`value`

, но уже с
Код: sql
1.
WHERE `shop_product_features`.`feature_id`=49
...
Рейтинг: 0 / 0
вывод значения в дополнительный столбец
    #40055957
lyashko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex_Ustinov,

Один раз
Код: sql
1.
WHERE

уже есть. Второй раз же нельзя, или я неправильно понял?
...
Рейтинг: 0 / 0
вывод значения в дополнительный столбец
    #40055967
DHDD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
вывод значения в дополнительный столбец
    #40055984
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lyashko
Alex_Ustinov,

Один раз
Код: sql
1.
WHERE

уже есть. Второй раз же нельзя, или я неправильно понял?
Код: sql
1.
WHERE `product_features`.`feature_id`=52 AND ...
...
Рейтинг: 0 / 0
вывод значения в дополнительный столбец
    #40056026
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT spf.id,
       spf.product_id, 
       MAX(CASE WHEN sfvv.feature_id = 52 THEN sfvv.value END) as v52, 
       MAX(CASE WHEN sfvv.feature_id = 49 THEN sfvv.value END) as v49
FROM shop_product_features spf
LEFT JOIN shop_feature_values_varchar sfvv ON spf.feature_value_id=sfvv.id 
WHERE sfvv.feature_id IN (52, 49)
GROUP BY spf.id,spf.product_id


fiddle

PS. А почему в таблицах дублируется feature_id ?
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / вывод значения в дополнительный столбец
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]