在 PostgreSQL 中连接具有两个条件或两列共有的表
我有两张桌子。表 1 列出了商店中所有商品的商品、颜色和尺寸。表 2 是定价列表,包含商品、尺寸、价格和商品 ID。价格由商品和尺寸决定。如何将价格显示在表 1 上?
表 1-
商品 | 颜色 | 尺码 |
---|---|---|
示例衬衫 | 红色 | M |
裤子 | 蓝色 | S |
...
表 2-
商品 | 尺码 | 价格 | 示例item_size_id |
---|---|---|---|
衬衫 | S | 2.99 | 013443 |
衬衫 | M | 3.99 | 013444 |
衬衫 | L | 4.99 | 013445 |
裤子 | S | 5.99 | 013452 |
...
想要的结果:
商品 | 颜色 | 尺码 | 价格 |
---|---|---|---|
衬衫 | 红色 | M | 3.99 |
裤子 | 蓝色 | S | 5.99 |
...
我尝试过:
SELECT item, color, size, price
FROM table1
LEFT JOIN table2
ON table1.item = table2.item AND table1.size = table2.size
但这导致所有价格为空。
我已经尝试过 CASE WHEN 语句,虽然这有效,但花了很长时间,所以有更好的方法吗?
I have two tables. Table 1 has item, color, and size for all items in the store. Table 2 is a pricing list and has item, size, price, and itemid. Price is determined from item and size. How can I get the price on to Table 1?
Table1- Example
item | color | size |
---|---|---|
shirt | red | M |
pants | blue | S |
...
Table2- Example
item | size | price | item_size_id |
---|---|---|---|
shirt | S | 2.99 | 013443 |
shirt | M | 3.99 | 013444 |
shirt | L | 4.99 | 013445 |
pants | S | 5.99 | 013452 |
...
Result wanted:
item | color | size | price |
---|---|---|---|
shirt | red | M | 3.99 |
pants | blue | S | 5.99 |
...
I have tried:
SELECT item, color, size, price
FROM table1
LEFT JOIN table2
ON table1.item = table2.item AND table1.size = table2.size
But this results in all nulls for price.
I have tried CASE WHEN statements and while this worked, it took forever so is there is a better way?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您的查询是正确的,只是两个表中都存在同名的列,并且您没有指定所引用的列。
有关架构和测试,请参阅下面的 dbFiddle 行。
db<>fiddle 此处
Your query is correct, except that columns of the same name exist in both tables and you have not specified which one you are referring to.
See dbFiddle line below for schema and testing.
db<>fiddle here