gpt4 book ai didi

php - SQL+CI : How to join multiple rows?

转载 作者:行者123 更新时间:2023-11-30 23:34:45 24 4
gpt4 key购买 nike

我有两个表 manufacturercolors

在表制造商中。

id      title
5 Audi
8 Toyota
11 Peugeot

在颜色表中,我为制造商提供了多种颜色

id      car_id     color
1 5 red
2 5 blue
3 8 cyan
4 5 purple
5 8 dark_cyan
6 11 white
7 11 black

问题是,我如何从数据库中获取结果以显示所有汽车的所有颜色?

我喜欢这样的东西..

$this->db->select('m.*, c.*');
$this->db->join('colors c', 'c.car_id = m.id', 'left');
$this->db->group_by('m.title');
$this->db->order_by('c.color', 'DESC');

return $this->db->get('manufacturer');

查看

<?php foreach($all_colors->result() AS $color) : ?>

<h4><?php echo $color->title; ?></h4>

<?php echo $color->color; ?>

<?php endforeach; ?>

所以它会像这样显示

- Audi
red
blue
purple

- Toyota
cyan
dark_cyan

- Peugeot
white
black

这个我的例子将只显示那辆车的标题和第一个颜色......?

- Audi
red

- Toyota
cyan

- Peugeot
white

感谢大家的帮助!

最佳答案

我没有发现您获取数据的方式有任何问题。唯一的问题可能是在这些方法中使用了别名。尝试像这样使用原始查询:

$q = $this->db->query("SELECT * FROM manufacturer m left join colors c on c.car_id = m.id GROUP BY m.title ORDER BY c.color DESC");
return $q->result();

然后:

<?php foreach($all_colors->result() AS $color) : ?>
<h4><?php echo $color->title; ?></h4>
<?php echo $color->color; ?>
<?php endforeach; ?>

或者尝试不使用别名获取数据:

$this->db->select('*');
$this->db->join('colors', 'colors.car_id = manufacturer.id', 'left');
$this->db->group_by('manufacturer.title');
$this->db->order_by('colors.color', 'DESC');
return $this->db->get('manufacturer');

关于php - SQL+CI : How to join multiple rows?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8437375/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com