こんにちは、みんな!
私はこのようなデータベーステーブルを持っています(わかりやすくするために削除されています):
customer
====================
name | track
====================
John | one
Sue | two
Greg | one
Loreen | three
Niles | two
ここで、selectステートメントによって、次のような一意のトラックごとに新しい色を生成したいと思います。
SELECT name, track, ('#' || HEX(RANDOMBLOB(3))) AS color
FROM customer;
残念ながら、テーブルの内容やデータベースの構造を変更することはできません。そのため、その場で色を生成する必要があります。上記のSELECT
クエリは次のようなものを生成します:
name | track | color
====================================
John | one | #000000
Sue | two | #444444
Greg | one | #888888
Loreen | three | #CCCCCC
Niles | two | #FFFFFF
つまり、各行の新しい色。しかし、それは私が望むものではありません!次のように、すべての一意のトラックで同じ色を維持する必要があります。
name | track | color
====================================
John | one | #000000
Sue | two | #444444
Greg | one | #000000
Loreen | three | #888888
Niles | two | #444444
つまり、すべての「1」トラックは「#000000」色である必要があり、すべての「2」トラックは「#444444」色である必要があります。
前に述べたように、データベースを変更する余裕がないので、クエリを実行することしかできません。また、これはAndroidデバイスで実行されているSQLiteデータベースであるため、これらの厄介なサーバー側クエリも実行できません。
これまでの私の努力:
私はこれまでに次のクエリを思いついた:
SELECT a.name, a.track, b.color
FROM 'customer' AS a
LEFT JOIN (
SELECT track, ('#' || HEX(RANDOMBLOB(3))) AS color
FROM 'customer'
GROUP BY track) AS b
ON (b.track == a.track);
しかし、そのクエリは、私が技術的に実行できることと、アーキテクチャ的に実行できることとの境界にあります。明確に定義された方法でそのようなクエリを実行するために必要なコードベースへの変更は、その結果よりもほとんど費用がかかります。
それで、あなたがた、仲間の建築家は何と言いますか?どうすればこれをできるだけ効率的に行うことができますか?