2

他のテーブルのレコードをstore_orders_itemsに挿入しようとしています。例えば:

INSERT INTO store_orders_items( order_id, sel_item_id, sel_item_price)
  SELECT order_id, sel_item_id, sel_item_price
      FROM orders_ids 
      INNER JOIN store_orders ON store_orders.id = orders_ids.order_id
      INNER JOIN store_shoppertrack ON  store_items.id=store_shoppertrack.sel_item_id
      Where session_id = '".$_COOKIE["PHPSESSID"]."';

次に、次のメッセージを受け取りました。「フィールドリスト」の不明な列「sel_item_price」。sel_item_priceAsitem_priceを無駄に設定しようとしました。これが私のテーブルです:

store_orders_items:

id| order_id | sel_item_id |sel_item_price|  
-------------------------------------------        
  |          |             |              |

store_shoppertrack:

id| session_id | sel_item_id |date_added|  
-------------------------------------------        
  |            |             |          |

store_orders:

id| item_total| order_date| 
---------------------------       
  |            |          |

store_items:

id| item_price| item_color|  
---------------------------       
  |           |           |  

orders_ids:

id| order_id | status|  
----------------------       
  |          |       |   
4

5 に答える 5

2

jour joinには、という名前の列sel_item_priceも列も持つテーブルはありませんitem_price。これINSERT INTOとは何の関係もありませんSELECT。それ自体も同様に失敗します。テーブルと結合したいと思います。そのテーブルから列store_itemsを選択して、のテーブルitem_priceに挿入します。あなたはこのようにあなたのように書き直すことができます:sel_item_pricestore_order_itemsSELECT

SELECT order_id, store_shoppertrack.sel_item_id, store_items.item_price AS sel_item_price
  FROM orders_ids 
  INNER JOIN store_orders ON store_orders.id = orders_ids.order_id
  INNER JOIN store_items ON store_items.id = store_orders.sel_item_id
  INNER JOIN store_shoppertrack ON  store_items.id=store_shoppertrack.sel_item_id
  Where session_id = 'foo';

AS sel_item_priceパーツで宛先列をすでに指定しているため、これはオプションですINSERT INTOSELECTただし、 willの出力には、ターゲットテーブルの出力と同じラベルが付けられたボリュームがあるため、一貫性が保たれる可能性があります。そして、それはあなたがASあなたの質問で間違った順序をとったことを示しているので、あなたはここで何かを学ぶかもしれません。

スキーマとクエリ用のSQLフィドルを作成しました。

于 2012-10-18T21:14:46.047 に答える
1

フィールドは、選択クエリの一部ではないテーブルsel_item_priceのみにあります。store_orders_itemsこれが、リストしたエラーの原因です。

于 2012-10-18T20:54:16.487 に答える
0

クエリは次のようになります。store_itemsエイリアスを使用していますが、結合には含まれていません

INSERT INTO store_orders_items( order_id, sel_item_id, sel_item_price)
  SELECT order_id, sel_item_id, sel_item_price
      FROM orders_ids 
      INNER JOIN store_orders ON store_orders.id = orders_ids.order_id
      INNER JOIN store_order_items 
                  ON store_orders.id = store_order_items.order_id --missing
      INNER JOIN store_shoppertrack 
                  ON store_items.id=store_shoppertrack.sel_item_id
      Where session_id = '".$_COOKIE["PHPSESSID"]."';
于 2012-10-18T20:59:42.913 に答える
0

また、に対して結合し、このテーブルstore_itemsの列をに含める必要があります。これは、挿入するテーブルにのみ存在するものではありません。item_priceSELECTstore_item_price

于 2012-10-18T20:59:59.247 に答える
0

このテーブルによると、唯一のフィールドは、データを挿入しようとしてsel_item_priceいるテーブルにあります。store_orders_itemsそのため、エラーが発生しました。

于 2012-10-18T20:57:08.187 に答える