我正在尝试将其他表中的记录插入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无济于事。 这是我的表格:
id| order_id | sel_item_id |sel_item_price|
-------------------------------------------
| | | |
id| session_id | sel_item_id |date_added|
-------------------------------------------
| | | |
store_orders:
id| item_total| order_date|
---------------------------
| | |
id| item_price| item_color|
---------------------------
| | |
id| order_id | status|
----------------------
| | |
答案 0 :(得分:2)
jour join中没有表,其中包含名为sel_item_price
的列,也不包含列item_price
。 INSERT INTO
与此无关,SELECT
本身也会失败。我假设您也想加入store_items
表,并从该表中选择item_price
列,以便插入sel_item_price
store_order_items
表。您可以像这样重写SELECT
:
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
的输出现在将标记与目标表的标记相同的列。并且它表明你在问题中得到了AS
错误的顺序,所以你可能会在这里学到一些东西。
我为您的架构和查询创建了SQL Fiddle。
答案 1 :(得分:1)
字段sel_item_price
仅在您的store_orders_items
表中,而不是您的选择查询的一部分。这是您列出的错误的原因。
答案 2 :(得分:0)
根据此表,唯一的字段sel_item_price
位于表store_orders_items
中,这是您要插入数据的表。这就是为什么你得到错误。
答案 3 :(得分: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"]."';
答案 4 :(得分:0)
您还需要加入store_items
,并在item_price
中的此表格中添加SELECT
列,而不是store_item_price
,这只列在您要插入的表格中成