我簡化了這個問題,所以它更容易發佈。我堅持添加與其他表格無關的配置表。如果您寧願跳過查看我真正的問題是什麼,請查看當前的最終輸出以及所需的最終輸出。爲了方便,最後我有一個非工作的SQL解決方案。SQLITE3:使用多行的兩個不相關表的聯合
請幫助和提前致謝!
背景:
基本上,我已經得到了有8個內聲明連接來連接各種表格數據。我原本有8個不同的查詢,但在我的嵌入式機器上,查詢運行大約2-3秒,每個查詢總共花費20-30秒。這太長了。大部分時間是交易設置和拆解;查詢速度非常快。由於我想在1-2秒的時間範圍內獲取數據,因此我決定將所有查詢合併到一個查詢中。不幸的是,這些表本身是外部數據庫的重複內容,不能從嵌入式設備查詢;我不願意將此時的數據合併到一張表中。該設備只有python2.5和sqlite3,但我已經安裝了sqlalchemy,並且我通常在我的代碼中使用ORM。不幸的是,我無法在機器上生成更多的二進制文件,但是我可以寫出儘可能多的python以滿足我的心願。
數據
表1:用戶
name | number | data
--------------------------------
alpha | 12345 | special
beta | 54321 | special-er
表2(無關表1):配置
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處理器的嵌入式設備(閱讀:真的很慢)。兩個選擇對我的應用程序來說太長了。 – 2012-12-07 19:23:55