mysql派生表在where子句中派生表

时间:2013-06-28 15:26:45

标签: mysql sql entity-framework

我有一些SQL(从实体框架中删除可读性),它可以在SQL Server中运行,但不能在MySQL中运行。我假设这意味着我已经达到了MySQL的限制,但无法确定。

我有3张桌子:

带有ProductId和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。

由于

1 个答案:

答案 0 :(得分:0)

您不能在MYSQL中加入子查询并返回主FROM子句中的其他表之一。那不行。

哇,那是一些非常难看的代码。我认为归结为以下几点。它只是在一个真正的回合途中到达那里。

SELECT  Project1.*

FROM    products AS Project1

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