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_price 设置为 item_price 无济于事。这是我的表:

store_orders_items:

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

store_shoppertrack:

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

商店订单:

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

商店物品:

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

订单ID:

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

5 回答 5

2

jour join 中没有表,它有一个名为 的列sel_item_price,也没有一个列item_priceINSERT 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 INTO。但这可能有助于保持一致性,因为SELECT现在将 hace 卷标记为与目标表相同的输出。它表明您在AS问题中的顺序错误,因此您可能会在这里学到一些东西。

我为您的架构和查询创建了一个SQL Fiddle 。

于 2012-10-18T21:14:46.047 回答
1

该字段sel_item_price仅在您的store_orders_items表中,不属于您的选择查询。这是您列出的错误的原因。

于 2012-10-18T20:54:16.487 回答
0

根据此表,唯一的字段sel_item_price是表store_orders_items中您要插入数据的字段。这就是你得到错误的原因。

于 2012-10-18T20:57:08.187 回答
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_price此表中的列包含在您的 中SELECT,而不是store_item_price仅存在于您要插入的表中

于 2012-10-18T20:59:59.247 回答