0

私が使用しているテーブル:

       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

上記の sku から関連する製品 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     |
|------------|-------------|        

任意の支援をいただければ幸いです。

4

1 に答える 1

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

ただし、1 からシステムで可能な最大 SKU までの値が入力されたヘルパー Numbers テーブルが必要です。

2345 から 2349 までの値が取り込まれた数値の例については、このSQL Fiddleを確認してください。

于 2013-09-25T05:42:08.823 に答える