2

私はこれらの2つのテーブルを持っています:

ファクチュラ

    FacturaID (PK) int
    Fecha date
    Total money

ファクトラ詳細

    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

ALIASタイプミスを避けるために、 tableNames の前後に指定できます。

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 に答える