是否有一种简单的方法可以从两个不相关的表中选择两个列,以便在插入中使用这些列?
免责声明:理想情况下,我将不需要这样做,因为该模式将被设置为带有一些“外键”和“参照完整性”的东西。但是,似乎这些概念都不存在于创建此模式的星球上。
这是我需要做的简化版:
客户表
Id Name
------------
1 Eddie
2 Stone
3 Mike
产品表
Id Name
---------------------
100 Drum sticks
101 Guitar strings
102 Amplifier
发票表
Id CustomerName ProductName
---------------------------------------
1000 Eddie Guitar Strings
1001 Mike Amplifier
在我的SQL代码中,我有一个
:CustomerId
和:ProductId
,理想情况下,我想做这样的事情:INSERT Invoice (
Id,
CustomerName,
ProductName
)
SELECT
:InvoiceId,
Customer.Name,
Product.Name
FROM
Customer,
Product
WHERE
Customer.CustomerId = :CustomerId
and Product.ProductId = :ProductId
如果“客户”和“产品”记录都存在,则可以正常工作,但我还需要解决其中不存在任何一项的情况。 (对真的。)
我能想到的唯一方法是声明诸如
:CustomerName
和:ProductName
之类的变量并将其预填充到insert语句之外。有没有没有多余的变量方法来实现这一目标的方法?
最佳答案
您可以这样做:
INSERT Invoice (
Id,
CustomerName,
ProductName
)
SELECT
:InvoiceId,
(
SELECT
Customer.Name
FROM
Customer
WHERE
Customer.CustomerId = :CustomerId
),
(
SELECT
Product.Name
FROM
Product
WHERE
Product.ProductId = :ProductId
)
FROM RDB$DATABASE