0

我收到以下查询:

    SELECT      ur.repair_id, ur.repair_complete, ur.repair_noted_by_client, ur.repair_problem, ur.added_at, ur.added_by, ur.repaired_at, ur.repaired_by,
                aa.account_fullname AS added_by_name,
                ar.account_fullname AS repaired_by_name
    FROM        units_repairs AS ur
    LEFT JOIN   (SELECT account_id, account_fullname FROM accounts LIMIT 1) AS aa ON aa.account_id = ur.added_by
    LEFT JOIN   (SELECT account_id, account_fullname FROM accounts LIMIT 1) AS ar ON ar.account_id = ur.repaired_by
    WHERE       ur.unit_id = 1

仅当account_id = 1. 如果让说repaired_by = 2那么它说NULL...

谢谢,我不知道我错过了什么。

4

2 回答 2

1

您正在加入内部查询:

SELECT account_id, account_fullname FROM accounts LIMIT 1

你有LIMIT 1,它只给你一行(可能有 repaired_by = 1),然后你想过滤并只获取 repaired_by 为 2 的行......而你没有那个。

于 2012-10-19T16:24:15.633 回答
0

可能行中没有满足条件repaired_by = 2的记录,

 LEFT JOIN   (SELECT account_id, account_fullname FROM accounts LIMIT 1) AS ar ON ar.account_id = ur.repaired_by

因此,ar.account_id = ur.repaired_by返回 NULL。

于 2012-10-19T16:23:42.527 回答