2012-03-20 17 views
0

我被困在Sqlite數據庫中的查詢。 完整的表格結構有點複雜,所以我會舉一個例子來分解我的問題。 我有2個表像Sqlite查詢結合在字符串上的幾個列進行搜索

T1 
_id  name  v1  v2  v3 
1   test  4   3   1 
2   to  1   2   2 
3   show  2   2   2 
4   what  4   2   4 
5   I   1   1   1 
6   mean  3   3   1 

T2 
_id  name 
1   this 
2   is 
3   a 
4   test 

V1,V2,V3的組合T2 _id和外鍵將導致一個字符串。

在這個例子中:

T1 _id 1:testathis
T1 _id 2:thisisis
T1 _id 3:isisis
T1 _id 4:testistest
T1 _id 5:thisthisthis
T1 _id 6 :aatest

而在這個結果字符串我想搜索並得到一個結果表。 例如,如果搜索字符串是「三軍情報局」(在SQL查詢「%ISI%」),我希望得到一個結果表是這樣的:

name v1v2v3 
to  thisisis 
show isisis 

據propably戒菸很容易,但我完全被困在這裏。 我嘗試過幾種方法,包括group_concat()的各種組合選擇...其中子句。 雖然我嘗試了一個類似於this的查詢。 但我總是失敗的事實,字符串必須從另一個表的行進行連接。

回答

1
SELECT 
    T1.name as name, 
    tmpV1.name || tmpV2.name || tmpV3.name as v1v2v3 
FROM 
    T1 
JOIN 
    T2 as tmpV1 on T1.v1 = tmpV1._id 
JOIN 
    T2 as tmpV2 on T1.v2 = tmpV2._id 
JOIN 
    T2 as tmpV3 on T1.v3 = tmpV3._id 
WHERE 
    v1v2v3 like '%isi%' 
; 

編輯:噢Mosty打我。

2

卡爾,給這個嘗試:

select t1.name, t21.name || t22.name || t23.name as v1v2v3 from t1 
join t2 t21 on t1.v1 = t21._id 
join t2 t22 on t1.v2 = t22._id 
join t2 t23 on t1.v3 = t23._id 
where t21.name || t22.name || t23.name like '%isi%' 

我沒有SQLite的現在進行測試,但它應該工作:)

+0

很好玩先生:) – jon 2012-03-20 14:02:05