0

COALESCEを使用したSELECTから結果を取得した後、テーブルに参加しようとしています。

SELECT
    COALESCE(
            (
                SELECT
                      relocations.location_id
                FROM
                      relocations
                WHERE
                      parts.id=relocation.part_id
                ORDER BY
                      relocations.date_moved
                DESC
                LIMIT 
                      1
            )
            ,
            parts.location_id
       ) AS locationId,
    locations.name
FROM
    parts
JOIN
    locations ON locations.id=locationId

ただし、クエリは無効であり、MySQLはlocationIdが不明な列であると通知します。どうすればこれを修正できますか?

テーブル構造

【パーツ】id| location_id

[再配置]id| location_id | date_moved

[場所]id| 名前

4

1 に答える 1

2

私が正しく理解していれば、あなたはCOALESCEコラムに参加しようとしています。これを試して:

SELECT a.locationId, locations.name FROM
    (SELECT
        COALESCE(
                    (
                    SELECT
                          relocations.location_id
                    FROM
                          relocations
                    WHERE
                          parts.id=relocation.part_id
                    ORDER BY
                          relocations.date_moved
                    DESC
                    LIMIT 
                          1
                )
                ,
                parts.location_id
           ) AS locationId
    FROM
        parts) a
JOIN locations ON locations.id=a.locationId
于 2012-08-30T15:29:42.960 に答える