2014-03-07 127 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