mysql - 如何使用内部连接查询和 where like 子句从表 Produto_precos 中获取另外两个值
问题描述
我有两张桌子,Product
和Product_prices
。对于每种产品,我有三种类型的价格(ebook(0)
和impress(1)
)combo(2)
。我想加入这两个表并获得该项目的三种价格。当我执行子句时WHERE prices1_.value like '%1%'
表产品
------------------------------------------------ id 描述 页面标题 ------------------------------------------------ 1 哈利波特 230 哈利波特 2 指环王 950 指环王 3 权力的游戏 980 权力的游戏
表 Product_prices
------------------------------------------------ Product_id bookType 值 ------------------------------------------------ 1 0 20.40 1 1 28.00 1 2 40.00 2 0 15.00 2 1 25.50 2 2 42.00 3 0 21.00 3 1 30.50 3 2 47.00
这是关于休眠的查询:
选择 清楚的 product0_.id 为 id1_0_, product0_.description 作为descript3_0_, product0_.pages 作为 pages4_0_, product0_.title 为 title6_0_, 价格 1_.Product_id 为 Product_1_1_0__, price1_.bookType 作为 bookType2_1_0__, 价格1_.value 作为 value3_1_0__ 来自产品 produto0_ 在 product0_.id=prices1_.Product_id 上的内部连接 Product_prices prices1_ where lower(product0_.title) like '%1%' 或prices1_.bookType = 0 和price1_.value 像'%1%' 或prices1_.bookType = 1 和price1_.value 像'%1%' 或prices1_.bookType = 2 和price1_.value 像'%1%'
我希望得到以下结果或只有一行包含每个产品的三个值:
------------------------------------------------ id 描述 页面标题 Product_id bookType 值 -------------------------------------------------- --------------- 2 指环王 950 Lord of... 2 0 15.00 2 指环王 950 Lord of... 2 1 25.00 2 指环王 950 Lord of... 2 2 42.00 3 权力的游戏 980 游戏... 3 0 21.00 3 权力的游戏 980 游戏... 3 1 30.50 3 权力的游戏 980 游戏... 3 2 47.00
但我只有以下结果:
------------------------------------------------ id 描述 页面标题 Product_id bookType 值 -------------------------------------------------- --------------- 2 指环王 950 Lord of... 2 0 15.00 3 权力的游戏 980 游戏... 3 0 21.00
解决方案
提醒我,以下问题的哪一部分未能解决......
DROP TABLE IF EXISTS product;
CREATE TABLE product
(id SERIAL PRIMARY KEY
,title VARCHAR(30) NOT NULL
,pages INT NOT NULL
);
INSERT INTO product VALUES
(1,'Harry Potter',230),
(2,'Lord of the Rings',950),
(3,'Game of Thrones',980);
DROP TABLE IF EXISTS prices;
CREATE TABLE prices
(product_id INT NOT NULL
,book_type INT NOT NULL
,price DECIMAL(5,2) NOT NULL
,PRIMARY KEY(product_id,book_type)
);
INSERT INTO prices VALUES
(1,0,20.40),
(1,1,28.00),
(1,2,40.00),
(2,0,15.00),
(2,1,25.50),
(2,2,42.00),
(3,0,21.00),
(3,1,30.50),
(3,2,47.00);
SELECT c.*
, a.*
FROM prices a
JOIN prices b
ON b.product_id = a.product_id
JOIN product c
ON c.id = b.product_id
WHERE b.price LIKE '%1%';
+----+-------------------+-------+------------+-----------+-------+
| id | title | pages | product_id | book_type | price |
+----+-------------------+-------+------------+-----------+-------+
| 2 | Lord of the Rings | 950 | 2 | 0 | 15.00 |
| 2 | Lord of the Rings | 950 | 2 | 1 | 25.50 |
| 2 | Lord of the Rings | 950 | 2 | 2 | 42.00 |
| 3 | Game of Thrones | 980 | 3 | 0 | 21.00 |
| 3 | Game of Thrones | 980 | 3 | 1 | 30.50 |
| 3 | Game of Thrones | 980 | 3 | 2 | 47.00 |
+----+-------------------+-------+------------+-----------+-------+
推荐阅读
- python - ImportError:无法导入 PIL.Image。`array_to_img`的使用需要PIL
- mongodb - Mongoose 从数组数组中删除一个对象
- python - 向外部应用程序发送 Discord 消息
- python - 给定列的*列表*,如何用零列填充 TF 张量
- swift - 如何使用 Codable Protocol Swift 在 CoreData 中保存自定义类型
- java - Java中的XML大写元素值
- file - 使用 SQR 访问另一台计算机上的文件
- google-cloud-storage - 在谷歌云上托管网站的问题
- pandas - 是否可以在 pandas 数据框中执行相当于 SQL 嵌套请求的操作?
- php - 如何在 WordPress 帖子中更改 h2、h3、h4 的颜色