#mysql
Вопрос:
У меня есть две таблицы продукты и атрибуты продукта
products
id product_name
1 P1
2 P2
3 P3
product_attributes
id product_id size stock
1 1 S 10
2 1 M 0
3 1 L 0
4 2 S 1
5 2 M 2
6 2 L 1
7 3 S 1
8 3 M 1
My expected output is like below:-
product_id product_name
2 P2
3 P3
1 P1
Поэтому в основном я хочу, чтобы продукты в верхней имея в наличии все товары такие атрибуты, как Р2 имея в наличии все атрибуты и акциям сумма 4 и если вы видите Р3 также имея все атрибуты продукта, но суммой менее P2, который является только 2 и P1 пойдет вниз, потому что я не есть запас.
select id as product_id, product_name from products Order BY ....
Может ли кто-нибудь помочь мне добиться того же самого?
Комментарии:
1. что вы пытались сделать до сих пор, чтобы решить эту проблему?
2. я пытаюсь выполнить подзапрос в порядке, но не работает
Ответ №1:
В глубине души, я думаю, вы, вероятно, ищете что-то большее, чем это…
DROP TABLE IF EXISTS products;
CREATE TABLE products
(id SERIAL PRIMARY KEY
,product_name CHAR(2) NOT NULL
);
INSERT INTO products VALUES
(1,'P1'),
(2,'P2'),
(3,'P3');
DROP TABLE IF EXISTS product_attributes;
CREATE TABLE product_attributes
(id SERIAL PRIMARY KEY
,product_id INT NOT NULL
,size CHAR(1) NOT NULL
,stock INT NOT NULL
);
INSERT INTO product_attributes VALUES
(1,1,'S',10),
(2,1,'M', 0),
(3,1,'L', 0),
(4,2,'S', 1),
(5,2,'M', 2),
(6,2,'L', 1),
(7,3,'S', 1),
(8,3,'M', 1);
SELECT product_id
FROM product_attributes
WHERE stock <> 0
GROUP
BY product_id
ORDER
BY COUNT(DISTINCT size) DESC;
------------
| product_id |
------------
| 2 |
| 3 |
| 1 |
------------