2013-06-28 104 views
1

我有一些SQL(從實體框架中裁剪掉,用於readabilty),它在SQL Server中工作,但不是MySQL。我假設這意味着我已經達到了MySQL的限制,但不能確定。派生表的where子句中的mysql派生表

我有3個表:

產品有產品編號和AccommodationId

住宿與AccommodationId

客房配有RoomId

SELECT * 
FROM (SELECT * FROM products) AS Project1 
WHERE EXISTS(
    SELECT * 
    FROM rooms 
    LEFT OUTER JOIN 
    (SELECT * FROM accommodations AS A WHERE Project1.AccommodationId = A.AccommodationId) 
    AS Project2 ON 1 = 1 
) 

我得到這個錯誤:

Error Code: 1054. Unknown column 'Project1.AccommodationId' in 'where clause' 

我想了解這個錯誤,看看我是否可以更改我的代碼以使EntityFramework生成兼容的SQL。

感謝

+0

您不能加入到MYSQL的子查詢中,並返回到主'FROM'子句中的其他表之一。這是行不通的。 – Tom

回答

0

您不能加入到MYSQL中的一個子查詢並參閱回其他表的一個在主FROM子句。這是行不通的。

哇,那是一些非常醜陋的代碼。我認爲它歸結爲以下幾點。它只是在一個真正的方向到達那裏。

SELECT Project1.* 

FROM products AS Project1 

     INNER JOIN accommodations AS A 
     ON Project1.AccommodationId = A.AccommodationId 
+0

嗨, 感謝您的回答。是的,你的SQL對於我描述的場景是正確的,但是我引用的SQL被高度減少了,並且實際上並沒有解決我真正的編碼問題。我可以理解喜歡ORM的人以及它給出的所有優點,但作爲一名SQL開發人員,直到這些技術能夠寫出比我更精確的更好的SQL,我寧願按照自己的方式去做。 感謝您的回答,我希望我已經爲MySQL配置了EF錯誤,因此完成後可以生成與MySQL兼容的SQL。 –