2013-06-28 105 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。 –