Как преобразовать запрос SQL в запрос Sequelize.js? - PullRequest
0 голосов
/ 22 января 2019

Сначала данные и таблицы следующие.

CREATE TABLE products
(
    p_id INT,
    p_name VARCHAR(32),
    PRIMARY KEY (p_id)
);

CREATE TABLE color
(
    p_id INT,
    p_color VARCHAR(24)
);

CREATE TABLE size
(
    p_id INT,
    p_size VARCHAR(12)
);

INSERT INTO products
VALUES
(1, 'test1'),
(2, 'test2'),
(3, 'test3'),
(4, 'test4'),
(5, 'test5');

INSERT INTO color
VALUES
(1, 'black'),
(1, 'white'),
(1, 'gray'),
(2, 'black'),
(2, 'beige'),
(3, 'blue'),
(3, 'red'),
(3, 'green'),
(4, 'black'),
(4, 'white'),
(4, 'beige'),
(4, 'gray'),
(4, 'mustard'),
(5, 'black'),
(5, 'white');

INSERT INTO size
VALUES
(1, 'S'),
(1, 'M'),
(1, 'L'),
(1, 'XL'),
(2, 'Free'),
(3, 'XS'),
(3, 'S'),
(3, 'M'),
(3, 'L'),
(3, 'XL'),
(4, 'M'),
(4, 'L'),
(4, 'XL'),
(5, 'Free');

Хочу изменить sql запросы, чтобы разделить очереди. используется sequelize-cli

SELECT p.p_Id, p.p_name, s.p_size, c.p_color 
FROM products AS p 
LEFT OUTER JOIN size AS s 
ON p.p_id = s.p_id
LEFT OUTER JOIN color AS c
ON p.p_id = c.p_id;

Менял коды по-своему, но появилась неожиданная колонка Это просто id столбец. Я не знаю, почему я должен стоять перед колонкой id.

models.products.findAll({
        include: [{
            model: models.size,
            required: false,
        }, {
            model: models.color,
            required: false
        }]
    });

db.Product.hasMany(db.ProductSize, {
    foreignKey: 'productId'
});
db.Product.hasMany(db.ProductColor, {
    foreignKey: 'productId'
});
SELECT 
`p`.`p_id`, 
`p`.`p_name`, 

`s`.`p_id` AS `s.p_id`, 
`s`.`p_id` AS `s.p_id`, 
`s`.`p_size` AS `s.p_size`, 

`c`.`p_id` AS `c.p_id`, 
`c`.`p_id` AS `c.p_id`, 
`c`.`p_color` AS `c.p_color`, 

FROM `products` AS `p` 

LEFT OUTER JOIN `size` AS `s` 
ON `p`.`p_id` = `s`.`id`

LEFT OUTER JOIN `color` AS `c` 
ON `p`.`p_id` = `c`.`id`

Как изменить столбец id, указанный выше, на p_id? Понятия не имею, нужна помощь. ?

...