我有几张桌子:products
,transactions
,styles
。 SQL查询将products
和styles
连接到一个表中,该表包含我技术上需要的所有信息。但是,我需要在timestamp
购买product
时对该信息进行排序。出于这个原因,我需要将transactions
加入前一个连接的输出:
交易
| 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
JSON结构中存在productIDs
。
如何进行此类加入?
答案 0 :(得分:0)
尝试在where子句中添加类似的内容
AND exists(select value from openjson(productids) p where p.value in (select productid from products))
答案 1 :(得分:0)
@ Rohit.007您的交易表未规范化。理想情况下,每个唯一条目应该有多行。
我最终创建了一个包含数字索引,事务ID和产品ID的单独表。 作为交易的一部分,它为每个购买的产品保留了单独的行。