sql连接,其中tab1.cola值位于tab2.colb的json列表中

col17t5w  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(246)

我有几张table: products , transactions , styles . sql查询联接 products 以及 styles 一个包含我技术上需要的所有信息的表。不过,我需要对这些信息进行分类 timestamp 什么时候 product 已购买。所以我需要加入 transactions 使用前一个join的输出:
交易

| id | timestamp           | productIDs     |
|----|---------------------|----------------|
| 0  | 2014-08-04 07:56:54 | ["ID1", "ID2"] |
| 1  | 2014-08-04 07:56:57 | ["ID3", "ID4"] |

产品+款式

| productID | styleID | ... |
|-----------|---------|-----|
| ID1       | aaa     | ... |
| ID2       | bbb     | ... |
| ID3       | ccc     | ... |
| ID4       | ddd     | ... |

我要找的是:

| productID | styleID | timestamp           | ... |
|-----------|---------|---------------------|-----|
| ID1       | aaa     | 2014-08-04 07:56:54 | ... |
| ID2       | bbb     | 2014-08-04 07:56:54 | ... |
| ID3       | ccc     | 2014-08-04 07:56:57 | ... |
| ID4       | ddd     | 2014-08-04 07:56:57 | ... |

中的每一行 products + styles ,从中添加时间戳 transactions ,在哪里 productID 存在于 productIDs json结构。
如何执行这种连接?

gmxoilav

gmxoilav1#

尝试在where子句中添加类似的内容

AND exists(select value from openjson(productids) p where p.value in (select productid from products))
sycxhyv7

sycxhyv72#

@rohit.007您的事务表未规范化。理想情况下,对于每个唯一的条目,它应该有多行。
最后,我创建了一个单独的表,其中包含一个数字索引、事务id和产品id。它为作为事务一部分购买的每个产品保存单独的行。

相关问题