2012-08-10 33 views
-1

我有一點用下面的SQL麻煩......取多行中加入

第一步是:

從表從另一個表中取回一行的加入多個行的...結果數組應該是這樣的:

array(
    field_1, 
    field_2, 
    field_3, 
    joined_array(
    field_a_array(
     field_a_a, 
     field_a_b, 
     field_a_c 
    ), 
    field_b_array(
     field_b_a, 
     field_b_b, 
     field_b_c 
    ) 
) 
) 

我的查詢看起來是這樣的:

SELECT table_1.*, table_2.* 
FROM table_1 
JOIN table_2 ON table_2.field_1 = table_1.field_1 
WHERE table_1.field_1 = xyz 

但它只返回「table_2」中的一行...

那麼,我在做什麼錯了?因爲評論#1

編輯:

以上查詢是不實際的查詢,只有我的重寫。

我用笨的框架,因此,查詢是由笨類建立...用於查詢的代碼如下:

(似乎在哪裏,加盟的位置,等不對於codeigniters DB類重要)

$this->db->select('events.*, genres_x_events.*'); 

$this->db->from('events'); 
$this->db->where('events.slug', $slug); 
$this->db->where('events.deleted', 0); 

$this->db->join('genres_x_events', 'genres_x_events.event_slug = events.slug'); 

$query = $this->db->get(); 
+0

考慮在實際查詢中複製/粘貼。我猜你只是在你的問題的查詢中鍵入了一些錯誤。所以語法相關的答案可能不會有太大的幫助。 – Cerad 2012-08-10 13:32:49

+0

想,但我使用codeigniter作爲框架,所以沒有真正的實際querry,只有幾行codiginter db-class-functions ... – jacksbox 2012-08-10 13:55:20

回答

0

你缺少一個.table_2。而你JOIN應該是WHERE條件:

SELECT table_1.*, table_2.* 
FROM table_1 
JOIN table_2 ON table_2.field_1 = table_1.field_1 
WHERE table_1.field_1 = xyz 
+0

謝謝,我糾正了在主題 - 但可悲的是,這不是問題的querry;( – jacksbox 2012-08-10 13:59:01

+0

@jacksbox我建議你寫一個新的問題是問題不同於原來的問題編輯你的問題是一個壞主意,因爲現在這兩個答案都沒有任何意義,你原來的問題沒有提到codeigniter並沒有標記爲 – Tchoupi 2012-08-10 14:01:52

+0

好吧,我會那樣做 – jacksbox 2012-08-10 14:05:08

0

你好像缺少點:

凡說, 「TABLE_2 *」 我加了一個點:

SELECT table_1.*, table_2.* 
FROM table_1 
JOIN table_2 ON table_2.field_1 = table_1.field_1 
WHERE table_1.field_1 = xyz 
+0

謝謝,我糾正了這個話題 - 但不幸的是,這不是問題的問題;( – jacksbox 2012-08-10 13:54:19