2014-03-07 153 views
0

我有兩個表,其中一個存儲一些數據,如name, sex等。結束存儲images與第一個表的id相關的秒數。Codeigniter - 獲取相關條目

我需要得到第一個表的行並從第二個表中獲取所有圖像,我想用單個查詢來獲取它們。

我該怎麼做?它可能嗎?

我嘗試過simple join,但我只得到第二張表的第一個元素。

實施例表1:

---------------------- 
|ID | Name | Sex | 
---------------------- 
| 1 | Chris | Male | 
---------------------- 
| 2 | Elisa | Female | 
---------------------- 

表2:

------------------------------ 
| ID | User_id | Image name | 
------------------------------ 
| 1 | 1  | img1.jpg | 
------------------------------ 
| 2 | 1  | img2.jpg | 
------------------------------ 
| 3 | 1  | img3.jpg | 
------------------------------ 
| 4 | 2  | img4.jpg | 
------------------------------ 

我想有:

克里斯,男性,img1.jpg,img2.jpg,img3.jpg
Elisa,女,img4.jpg

等等......有什麼建議嗎?

回答

0
SELECT 
    table1.*, 
    GROUP_CONCAT(table2.image_name SEPARATOR ', ') as image_name 
FROM table1 
LEFT JOIN table2 
ON table1.id = table2.user_id 
GROUP BY table1.id; 

演示SQL Fiddle

+0

謝謝!這不完美! –

+0

請注意,GROUP_CONCAT()具有1024個字符的默認限制。 – Kalzem

0

與左外嘗試加入

SELECT user.*, image.image_name as image 
FROM user 
LEFT OUTER JOIN image 
ON user.id = image.user_id 

它會得到所有用戶的行,並把empty VAL中的形象,如果沒有被發現。

+0

該查詢返回3行使用相同的數據,ecept象場 –

+0

嗯,基本上是我們的目標。之後你可以在'foreach($ users as $ user)'中做一些PHP邏輯(更容易操縱數據而不用串聯它)。 – Kalzem