我正在使用的表格:
products table
|------------|-------------|
| product_id | product_sku |
|------------|-------------|
| 2345 | G54321 |
|------------|-------------|
| 2346 | G64321 |
|------------|-------------|
products_xsell
|----|------------|-------------|
| ID | product_id | xsell_id |
|----|------------|-------------|
| 3 | 2345 | 2346 |
|----|------------|-------------|
| 4 | 2346 | 2345 |
|----|------------|-------------|
我收到以下格式的csv:
SKU, Related_Items
2345,"2346,2347,2349"
112,"4840,4841,4844,4890,4891"
我能够根据XSELL表中的数据成功查询SKU,其中包含以下内容:
Select
products.products_model As 'Displayed Product',
products1.products_model As 'Related Item'
From
products_xsell Inner Join
products On products_xsell.products_id = products.products_id Inner Join
products products1 On products_xsell.xsell_id = products1.products_id
然后它返回:
|-------------------|----------------|
| Displayed Product | Related Item |
|-------------------|----------------|
| G54321 | G64321 |
|-------------------|----------------|
| G64321 | G54321 |
|-------------------|----------------|
我希望能够读取csv文件。 基本上创建各种“交叉连接”以构建所有“反向”交叉销售,然后从给定的sku中查找关联的产品ID并将它们插入到products_xsell表中。
例如,如果文件有一行sku:
2345,"2346,2347,2349"
我想构建以下内容:
2345,2346
2345,2347
2345,2349
2346,2345
2346,2347
2346,2349
2347,2345
2347,2346
2347,2349
2349,2345
2349,2346
2349,2347
从上面的skus中获取相关的产品ID:
54321,64321
54321,49245
54321,99499
64321,54321
64321,49245
64321,99499
49245,54321
49245,64321
49245,99499
99499,54321
99499,49245
99499,64321
并将它们插入到products_xsell表中以构建交叉销售和反向交叉销售关系:
products_xsell
|------------|-------------|
| product_id | xsell_id |
|------------|-------------|
| 54321 | 64321 |
|------------|-------------|
| 54321 | 49245 |
|------------|-------------|
| 54321 | 99499 |
|------------|-------------|
| 64321 | 54321 |
|------------|-------------|
| 64321 | 49245 |
|------------|-------------|
| 64321 | 99499 |
|------------|-------------|
| 49245 | 54321 |
|------------|-------------|
| 49245 | 64321 |
|------------|-------------|
| 49245 | 99499 |
|------------|-------------|
| 99499 | 54321 |
|------------|-------------|
| 99499 | 64321 |
|------------|-------------|
| 99499 | 49245 |
|------------|-------------|
感谢任何帮助。
答案 0 :(得分:0)
假设您有Numbers表并且csv表被称为csv,则查询SELECT很容易创建如下:
select c.sku, n.n from csv c INNER JOIN Numbers n ON
INSTR(CONCAT(',', c.Related_Items, ','), CONCAT(',', CAST(n.n AS CHAR), ',')) > 0
UNION ALL
select n.n, c.sku from csv c INNER JOIN Numbers n ON
INSTR(CONCAT(',', c.Related_Items, ','), CONCAT(',', CAST(n.n AS CHAR), ',')) > 0
但您需要辅助Numbers表,其中填充的值从1到系统中可能的最大SKU。
检查此SQL Fiddle以获取填充了2345到2349之间值的数字的示例