CREATE PROCEDURE catalog_get_category_products(IN inCategoryId INT)
BEGIN
SELECT p.product_id, p.name, p.description, p.price
FROM product p
INNER JOIN product_category pc
ON p.product_id = pc.product_id
WHERE pc.category_id = inCategoryId
ORDER BY p.product_id;
END$$
这个我的存储过程在执行时它返回任何内容,尽管类别有产品,似乎无法理解哪里出错了任何指针来解决这个问题。 执行上述程序时,应返回与该类别相关的产品
答案 0 :(得分:0)
以下对我有用。
表和测试数据的初始设置(您不必执行此部分;仅供参考):
CREATE TABLE IF NOT EXISTS product
(
product_id int PRIMARY KEY,
name varchar(50),
description varchar(50),
price decimal(10, 2)
);
CREATE TABLE IF NOT EXISTS product_category
(
product_id int,
category_id int,
PRIMARY KEY (product_id, category_id)
);
INSERT INTO product VALUES (1, 'Shirt', 'long-sleeve blue shirt', 15.99)
ON DUPLICATE KEY UPDATE product_id = product_id;
INSERT product_category VALUES (1, 23)
ON DUPLICATE KEY UPDATE product_id = product_id;
存储过程设置(尝试此部分并看到它适合您):
DROP PROCEDURE IF EXISTS catalog_get_category_products;
DELIMITER $$
CREATE PROCEDURE catalog_get_category_products
(
inCategoryId INT
)
BEGIN
SELECT p.product_id, p.name, p.description, p.price
FROM product p
INNER JOIN product_category pc
ON p.product_id = pc.product_id
WHERE pc.category_id = inCategoryId
ORDER BY p.product_id;
END$$
DELIMITER ;
调用存储过程(将23
替换为与category_id
表中至少一个有效product_id
相关联的有效product_category
:
CALL catalog_get_category_products(23);