2

我有这两张表:

法图拉

    FacturaID (PK) int
    Fecha date
    Total money

FacturaDetalle

    FacturaDetalleID (PK) int
    FacturaID int FK on Factura.FacturaID
    ProductoID char(10) FK on Producto.ProductoID
    Precio money

产品

    ProductoID (PK) char(10)
    Descripcion char(50)

现在添加一些数据:

INSERT INTO Producto (ProductoID, Descripcion) VALUES ('1', 'soda')
INSERT INTO Producto (ProductoID, Descripcion) VALUES ('2', 'papas')
INSERT INTO Producto (ProductoID, Descripcion) VALUES ('3', 'pan')

INSERT INTO Factura (Fecha, Total) VALUES ('Some Date', 100) SELECT SCOPE_IDENTITY() //Returns FacturaID = 1

INSERT INTO FacturaDetalle (FacturaID, ProductoID, Precio) VALUES (1, '1',  30)
INSERT INTO FacturaDetalle (FacturaID, ProductoID, Precio) VALUES (1, '1',  30)
INSERT INTO FacturaDetalle (FacturaID, ProductoID, Precio) VALUES (1, '1',  30)
INSERT INTO FacturaDetalle (FacturaID, ProductoID, Precio) VALUES (1, '2',  10)

我想要的是一个发送 FacturaDetalle 上可用的所有 4 行的查询......但我只需要FacturaDetalle.Precioand Producto.Descripcion

然而我一直做不到。。

我试过这样的事情:

SELECT 
   Producto.Descripcion, FacturaDetalle.Precio 
FROM Producto 
INNER JOIN FacturaDetalle ON FacturaDetalle.ProductoID = Producto.ProductoID 
WHERE FacturaDetalleID.FacturaID = 1

我得到了这个例外

无法绑定多部分标识符“FaturaDetalle.ProductoID”。
无法绑定多部分标识符“Prodcuto.ProductoID”。
无法绑定多部分标识符“FacturaDetalleID.FacturaID”。

我究竟做错了什么?

提前致谢

4

2 回答 2

5

为避免拼写错误,您可以提供ALIAStableNames。

SELECT  a.Descripcion, 
        b.Precio 
FROM    Producto a
        INNER JOIN FacturaDetalle b
            ON b.ProductoID = a.ProductoID 
WHERE   b.FacturaID  = 1

顺便说一句,在您的原始查询中,您使用FacturaDetalleID了而不是FacturaDetalle

于 2013-01-29T06:17:14.647 回答
2

只需在 where 条件下将 FacturaDetalleId 更改为 FacturaDetalle

SELECT 
Producto.Descripcion, FacturaDetalle.Precio 
FROM Producto 
INNER JOIN FacturaDetalle ON FacturaDetalle.ProductoID = Producto.ProductoID 
WHERE FacturaDetalle.FacturaID = 1
于 2013-01-29T06:16:03.190 回答