【问题标题】:I keep getting error code 1248 every derived table must have its own alias [duplicate]我不断收到错误代码 1248,每个派生表都必须有自己的别名 [重复]
【发布时间】:2014-05-05 04:06:22
【问题描述】:

我不断收到错误代码 1248,每个派生表都必须在下面有自己的别名,但无法弄清楚原因。我已经尝试重写了几次,看看我是否能发现我在哪里犯了错误,但我想我忽略了一些东西。

SELECT order_id, order_date, c.customer_id, last_name
FROM customers c
JOIN orders o ON c.customer_id = o.customer_id,
(
    SELECT phone
    FROM addresses a
    JOIN orders od ON a.customer_id = od.customer_id
)
WHERE address_id = billing_address_id AND ship_date IS NULL;

【问题讨论】:

  • 我认为你甚至不能把任何东西放在你有派生表的地方
  • 实际上 READING 错误是有用的。它会准确地告诉您问题所在。
  • @phil:(select phone ...) 是派生表。
  • @MarcB 是的,我知道。在加入条件之后拥有它是我所质疑的。拥有JOIN ... ON <join_condition>, <anything else> 只是无效的语法

标签: mysql


【解决方案1】:

我不确定您要做什么,但我认为您的问题是您没有为子查询提供别名,这是 JOIN 所必需的

SELECT order_id, order_date, c.customer_id, last_name
FROM customers c
    JOIN orders o ON c.customer_id = o.customer_id,
(SELECT phone
FROM addresses a
    JOIN orders od ON a.customer_id = od.customer_id) as subTable
WHERE address_id = billing_address_id AND ship_date IS NULL;

【讨论】:

    【解决方案2】:

    猜你在寻找这样的东西(不知道我是否所有字段都正确,但请确保你仔细检查;下次请给出表结构):

    SELECT
    o.`order_id`,
    o.`order_date`,
    o.`customer_id`,
    c.`last_name`,
    a.`phone`
    FROM
    orders AS o 
    LEFT JOIN customers AS c ON o.customer_id = c.customer_id
    LEFT JOIN addresses AS a ON (
        o.customer_id = a.customer_id
        AND a.address_id = o.billing_address_id
    )
    WHERE
    ship_date IS NULL;
    

    【讨论】:

    • 这成功了!非常感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-30
    • 2012-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多