2014-02-19 26 views
0

我正在使用Sqlite3,並且對於如何使用給定的數據集來構建字符串我有點難住。我想要的是從一個給定的物品中得到每一個標籤,而不需要處理一堆行。將所有結果作爲一行返回

SELECT i.item, t.tag 
    FROM items i 
    LEFT JOIN tags t 
     ON i.id=t.item 
    WHERE i.id=:id; 

返回表所示:

| item6 | tag1 | 
| item6 | tag2 | 

首選格式:

| item6 | tag1, tag2, tag3 | 
+0

如果項目是GIVEN(你說它是在問題中),爲什麼選擇它?如果這是你想要的,只選擇標籤。 – Rainbolt

+0

在這個用例中,我不一定有該項目的名稱(以及其他信息),只是它的ID。我希望能從單一選擇中獲得兩者。 – Jacobm001

+0

@John:外殼? – Jacobm001

回答

2

使用group_concat

SELECT i.item, 
     group_concat(t.tag) 
FROM items AS i 
LEFT JOIN tags AS t ON i.id = t.item 
WHERE i.id = :id 
GROUP BY i.item 

對於這樣一個小的查詢,性能並不重要,但如果y你認爲一個加入和一個GROUP BY是矯枉過正的,嘗試這樣的事情:

SELECT item, 
     (SELECT group_concat(tag) 
     FROM tags 
     WHERE item = :id) 
FROM items 
WHERE id = :id