【发布时间】:2016-09-10 19:35:13
【问题描述】:
我使用的数据库在我看来不是以最直观的方式设置的。我有两个要加入的表。 store 表包含有关商店的信息,并有一个 store_id 字段,该字段以 varchar 格式存储为 7 位数字。事务表有一个 transaction_id 字段,该字段设置为 hstore 并存储为“package_id”=>“10000417”。我正在尝试加入这些字段上的两个表。
我尝试将 transaction_id 字段转换为 varchar,同时尝试在 join 语句中使用子查询将“package_id”=>”部分添加到 store_id 字段。没有结果。所以我尝试了在JOIN语句中使用LIKE添加通配符,还是有问题,下面是我在使用LIKE时尝试的代码:
SELECT t.amount
,t.quantity_sold
,t.unit
,cast(t.transaction_details as varchar) as join_field
,s.product_name
,s.product_category
,s.metrc_id
FROM transactions t
LEFT JOIN store_info s ON t.transaction_details = s.store_id
WHERE t.transaction_details LIKE '%store_id%'
我尝试了许多其他变体。我希望有人可以为我提供一个关于尝试链接这两个表的更好方向的提示。
提前致谢,
编辑
我习惯于使用 SQL Server 而不是 Postgresql。从那以后,我对 hstore 数据类型进行了更多研究,并且对它的理解稍好一些。我仍然无法加入这两个表。我设法使用以下查询创建了一个只有 ID 号的新列。
SELECT *, transaction_details->'package_id' as ID
FROM transactions
我试图通过调用该列来加入但无济于事,所以我尝试了以下方法:
SELECT *
FROM transactions t
LEFT JOIN store_info s ON t.transaction_details->'package_id' = s.store_id
我还尝试使用以下方法强制转换为整数或 varchar
SELECT *
FROM transactions t
LEFT JOIN store_info s ON cast(t.transaction_details->'package_id'
as varchar) = s.store_id
对不起,我是个菜鸟。感谢您的帮助。
【问题讨论】:
标签: sql postgresql