Php 独特的mysql结果-codeigniter
我用两张桌子来储存关于汽车的信息。在第一个表中有一个关于汽车制造商等的信息,第二个表包含每辆汽车的图像。我的桌子如下所示:Php 独特的mysql结果-codeigniter,php,mysql,codeigniter,Php,Mysql,Codeigniter,我用两张桌子来储存关于汽车的信息。在第一个表中有一个关于汽车制造商等的信息,第二个表包含每辆汽车的图像。我的桌子如下所示: car_information car_images --------------- --------- id | 2 car_id 2 | img1 car_make | Fiat car_id 2 | img2 color | Blue car_id 2 | img3 etc .... 正如你所看到的,每辆车都有三
car_information car_images
--------------- ---------
id | 2 car_id 2 | img1
car_make | Fiat car_id 2 | img2
color | Blue car_id 2 | img3
etc ....
正如你所看到的,每辆车都有三张图片
这是我用来获取结果的查询
$this->db->select('
c.id,
c.car_make,
c.car_color,
ci.image
');
$this->db->from('car_information c');
$this->db->join('car_images ci', 'ci.car_id = c.id', 'left');
return $this->db->get();
一切正常,但我面临的问题是结果重复
例如:
2 Fiat Blue img1
2 Fiat Blue img2
2 Fiat Blue img3
3 BMW white img4
3 BMW white img5
这样做的结果是这样的
2 Fiat Blue img1 | img 2 | img 3
我想在一行中获取所有信息。
我知道我可以为您提供两个查询,但我想知道如何处理单个查询?您可以加入两个表,这样,如果有多个图像,您可以从汽车信息中获得相同的结果!您必须以两个查询的方式执行此操作,或者仅使用第一个结果数组提取汽车信息,然后循环使用图像数据。您可以加入两个表,以便在有多个图像时从汽车信息中获得相同的结果!您必须将此作为两个查询来执行,或者只使用第一个结果数组来提取汽车信息,然后在其上循环并使用图像数据。我想这就是您要寻找的答案。 请在此处阅读codeigniter用户指南 您的查询是正确的,但SQL不是这样工作的。你得到你要求的原始数据,格式化必须用你的编程语言(在本例中是php)完成,据我所知
$this->db->select('
c.id,
c.car_make,
c.car_color,
ci.image
');
$this->db->from('car_information c');
$this->db->join('car_images ci', 'ci.car_id = c.id', 'left');
$query = $this->db->get();
$i = 1;
foreach ($query->result() as $row) {
$car_array[$row->car_id][$i++] = $row->image;
}
var_dump($car_array);
这将创建一个数组,该数组将包含一个汽车id的所有图像。我想这就是您要寻找的答案。
请在此处阅读codeigniter用户指南
您的查询是正确的,但SQL不是这样工作的。你得到你要求的原始数据,格式化必须用你的编程语言(在本例中是php)完成,据我所知
$this->db->select('
c.id,
c.car_make,
c.car_color,
ci.image
');
$this->db->from('car_information c');
$this->db->join('car_images ci', 'ci.car_id = c.id', 'left');
$query = $this->db->get();
$i = 1;
foreach ($query->result() as $row) {
$car_array[$row->car_id][$i++] = $row->image;
}
var_dump($car_array);
这将创建一个数组,该数组将包含汽车id的所有图像添加以下行:
$this->db->groupby('c.id')代码>
像这样:
$this->db->select('
c.id,
c.car_make,
c.car_color,
ci.image
');
$this->db->from('car_information c');
$this->db->join('car_images ci', 'ci.car_id = c.id', 'left');
$this->db->group_by('c.id');
return $this->db->get();
这将在MySQL中起作用,因为在MySQL中,groupby
可以用作distinct
的同义词 添加以下行:$this->db->group_by('c.id')代码>
像这样:
$this->db->select('
c.id,
c.car_make,
c.car_color,
ci.image
');
$this->db->from('car_information c');
$this->db->join('car_images ci', 'ci.car_id = c.id', 'left');
$this->db->group_by('c.id');
return $this->db->get();
这将在MySQL中起作用,因为在MySQL中,groupby
可以用作distinct
的同义词 这个要求有理由吗?这个要求有理由吗?