Soy nuevo en MS Office Access, tengo algunosProblemas al construir la vista SQL para esta consulta. Sigo recibiendo un error: "La instrucción SQL no se pudo ejecutar porque contiene una combinación externa ambigua. Para forzar que se realice una de las combinaciones, cree una consulta separada que realice la primera combinación e incluya esa consulta en su declaración SQL".
1) ¿Cómo creo una consulta separada en la vista de MS SQL e incluyo esa consulta en mi declaración SQL principal?
2) No puedo entender porque el error esta ocurriendo ??
SELECT [Table : PurchaseDetails].PurchaseID
FROM [Table: Supplier]
LEFT JOIN ([Table : Purchase]
LEFT JOIN ([Table : Product]
LEFT JOIN [Table : PurchaseDetails]
ON [Table : Product].ProductID = [Table : PurchaseDetails].ProductID)
ON [Table : Purchase].PurchaseID = [Table : PurchaseDetails].PurchaseID)
ON [Table: Supplier].SupplierID = [Table : Purchase].SupplierID;
Respuestas
0 para la respuesta № 1No estoy seguro de Access, pero en SQL el comando ON debe seguir a JOIN, así:
SELECT [Table : PurchaseDetails].PurchaseID
FROM [Table: Supplier]
LEFT JOIN [Table : Purchase]
ON [Table : Purchase].PurchaseID = [Table : PurchaseDetails].PurchaseID
LEFT JOIN [Table : Product]
ON [Table : Product].ProductID = [Table : PurchaseDetails].ProductID
LEFT JOIN [Table : PurchaseDetails]
ON [Table: Supplier].SupplierID = [Table : Purchase].SupplierID;
0 para la respuesta № 2
¿Cómo creo una consulta separada en la vista de MS SQL e incluyo esa consulta en mi declaración SQL principal?
Tiene una consulta que involucra múltiples CONEXIONES IZQUIERDAS y el motor de base de datos no puede determinar exactamente cómo desea que se unan las tablas. Específicamente, ha determinado que lo hará (o podría) devuelven resultados diferentes dependiendo del orden en que aplique los JOIN.
Entonces, te está pidiendo que
crear una consulta utilizando solo un subconjunto de las tablas,
guardar esa consulta en Access, y luego
crear otra consulta que use la (s) otra (s) tabla (s) y la consulta guardada Para producir el resultado final.
Por ejemplo, puede crear la siguiente consulta y guardarla en Access como Purchase_PurchaseDetails
SELECT Purchase.PurchaseID, Purchase.SupplierID
FROM Purchase LEFT JOIN PurchaseDetails
ON Purchase.PurchaseID=PurchaseDetails.PurchaseID
Entonces podrías usar esa consulta en otro consulta, por ejemplo,
SELECT Supplier.SupplierID
FROM Suppliers LEFT JOIN Purchase_PurchaseDetails
ON Supplier.SupplierID=Purchase_PurchaseDetails.SupplierID
...O algo por el estilo.