私はこの問題を単純化して投稿するのが簡単です。私は他のテーブルとは関係のない設定テーブルを追加することに固執しています。私の本当の問題が何であるかを見るのをスキップするなら、現在の最終出力と望む最終出力を見てください。便宜上、私は最後にSQLの解決策がありません。SQLITE3:複数の無関係なテーブルと複数行の連合
ご協力いただきありがとうございます。
背景:
は基本的に私は、内側8を持っている文は、さまざまなテーブルのデータを接続するために参加するんです。私はもともと8つの異なるクエリを持っていましたが、私の埋め込みマシンでは、クエリの実行時間は約2〜3秒で、合計時間は20〜30秒です。これは長すぎます。その時間の大半はトランザクションのセットアップとティアダウンです。クエリは非常に高速でした。私は1〜2秒の時間枠でデータを欲しいので、すべてのクエリを1つのクエリにまとめることにしました。残念ながら、テーブル自体は、組み込みデバイスから照会できない外部データベースと重複しています。私はこの時点でデータを1つのテーブルにまとめるつもりはない。デバイスにはpython2.5とsqlite3しかありませんが、sqlalchemyがインストールされていますが、私のコードでORMを使用しています。残念ながら、私はマシン上でバイナリをさらに生成することはできませんが、私は心の欲望と同じくらい多くのPythonを書くことができます。
データ
表1:(表1とは無関係の)ユーザー
name | number | data
--------------------------------
alpha | 12345 | special
beta | 54321 | special-er
表2:設定
name | data
--------------------------------
lang | eng
big | 24
medium | 20
small | 13
私は現在取得しています何のファイナルテーブル出力:
name | number | data | config
-----------------------------------------------
alpha | 12345 | special | {null}
beta | 54321 | special-er | {null}
{null} | {null} | {null} | lang:eng
{null} | {null} | {null} | big:24
{null} | {null} | {null} | medium:20
{null} | {null} | {null} | small:13
私が欲しいものファイナルテーブル出力:
name | number | data | config
-----------------------------------------------
alpha | 12345 | special | lang:eng, big:24, medium:20, small:13
beta | 54321 | special-er | lang:eng, big:24, medium:20, small:13
現在の(非作業)ソリューション
これは私がこれまでにしたものである:
<!-- language: sql -->
SELECT *
FROM (
SELECT u.name as name
,u.number as number
,u.data as data
,NULL as config
FROM users u
UNION
SELECT NULL as name
,NULL as number
,NULL as data
,c.name||":"||c.data as config
FROM configurations c
) t
私は、数世代前のARMプロセッサを使用しているエンベデッドデバイスで作業しています。 2つの選択は、私のアプリケーションには長すぎます。 –