0

みんな私はこれに腹を立てています...私は2つのテーブルを持っています:

1. UniquePrefixes
2. Operator

UniquePrefixesには、「プレフィックス」フィールドのみが含まれます。例:

Prefix
------
1
12
123
12345

'Operator'テーブルには、'Prefix'フィールドを含む多くのデータがあります。例:

..... Prefix ......
----- ------ ------
      1
      12

私が達成しようとしていることは次のとおりです。

(pseudo)

foreach unique 'prefix'
select the 'Prefix' from 'Operator' if is equal to a unique 'prefix'
OR
select the 'closest' match that fits into that

例:

unique prefix = 1 (exists on 'Operator' so I am fine)
unique prefix = 12345 (doesnt exist on 'Operator' so I must get '12')

私がこれまでに行ったことは次のとおりです。

SELECT
    *
FROM
    UniquePrefixes
LEFT OUTER JOIN Operator
on 
    Operator.Prefix =(
        SELECT
            Operator.Prefix
        FROM
            Operator,
            UniquePrefixes
        WHERE
            length(Operator.Prefix)<= UniquePrefixes.prefix
        AND UniquePrefixes.prefix LIKE(
            Operator.Prefix || '%'
        )
        ORDER BY
            Operator.Prefix DESC
        LIMIT 1
    )

ただし、副選択が最初に実行されるため(明らかに)、機能しません:(

これが理にかなっていて、どんな助けにも本当に感謝することを願っています

4

1 に答える 1

1
    SELECT UniquePrefixes.Prefix, Operator.Prefix
      FROM UniquePrefixes
 LEFT JOIN Operator ON UniquePrefixes.Prefix LIKE Operator.Prefix || '%'
                   AND length(Operator.Prefix) <= length(UniquePrefixes.prefix)
     ORDER BY length(Operator.Prefix) desc
于 2011-05-17T13:11:12.033 に答える