gpt4 book ai didi

sql - 通过在另一个表中查找来插入记录(Access 2007)

转载 作者:行者123 更新时间:2023-12-04 05:39:29 26 4
gpt4 key购买 nike

我有一个 datagridview 行,包含三个字符串值。应在 Products 表中查找这些值以查找相应的产品 ID。然后这些将被插入到关系表中。我正在寻找最好的查询来实现这一点。

Here is my Products Table
+------------+--------------+
| Product_ID | Product_Name |
+------------+--------------+
| 1 | Foo |
| 2 | Bar |
| 3 | Baz |
| 4 | NewProduct |
+------------+--------------+

和我试图插入的关系表
+------------+----------------+-----------------+
| Product_Id | RelatedProd_Id | RelatedProd_Id2 |
+------------+----------------+-----------------+
| 1 | 2 | null |
| 2 | 3 | 1 |
| 3 | null | null |
+------------+----------------+-----------------+

下面的不是表格,它是一个示例 datagridview 行..
+------------+--------------+---------------+
| ProdName | RelProd_Name | RelProd_Name2 |
+------------+--------------+---------------+
| NewProduct | Foo | Bar |
+------------+--------------+---------------+

我试图从这一行中找到 id 并将其插入到关系表中。

我尝试了一个愚蠢的查询......但我不知道这样做的正确方法......类似的东西,
INSERT INTO PROD_RELATIONS (Product_id,RelatedProd_Id,RelatedProd_Id2)
VALUES
(SELECT Product_Id FROM Products WHERE Product_Name = 'NewProduct'),
(SELECT Product_Id FROM Products WHERE Product_Name = 'Foo'),
(SELECT Product_Id FROM Products WHERE Product_Name = 'Bar')

有人可以指导我吗?

最佳答案

使用您当前的表结构,这样的查询将起作用:

INSERT INTO Prod_Relations (Product_ID, RelatedProd_ID1, RelatedProd_ID2)
SELECT t1.Product_ID, t2.PRoduct_ID, t3.Product_ID
FROM Products t1, Products t2, Products t3
WHERE T1.Product_Name = 'NewProduct'
AND t2.Product_Name = 'Foo'
AND t3.Product_Name = 'bar'

但是,我建议将您的关系表更改为每个产品具有多行的更简单的布局:
Product_ID  |   RelatedProd_ID
------------+-----------------
4 | 1
4 | 2

这意味着如果产品具有 2 个以上的关系,您不必添加更多列。在这种情况下,您的插入语句将是:
INSERT INTO Prod_Relations (Product_ID, RelatedProd_ID)
SELECT t1.Product_ID, t2.PRoduct_ID
FROM Products t1, Products t2
WHERE T1.Product_Name = 'NewProduct'
AND t2.Product_Name IN ('Foo', 'Bar')

如有必要,您可以随时查询您的产品关系表以将其恢复为 2 列格式
SELECT  t1.Product_ID, 
MIN(t1.RelatedProd_ID) AS [RelatedProd_ID1],
MIN(t2.RelatedProd_ID) AS [RelatedProd_ID2]
FROM Prod_Relations t1
LEFT JOIN Prod_Relations t2
ON t2.Product_ID = t1.Product_ID
AND t2.RelatedProd_ID > t1.RelatedProd_ID
GROUP BY t1.Product_ID

关于sql - 通过在另一个表中查找来插入记录(Access 2007),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11446074/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com