Я приведу небольшой пример, чтобы объяснить, что я имею в виду.
CREATE TABLE blog
(
b_id int primary key not null,
b_title varchar(255) not null,
b_body text not null,
CONSTRAINT pk_b_id_01 PRIMARY KEY(b_id)
)
CREATE TABLE images
(
i_id int primary key not null,
i_image varchar(255) not null,
i_b_id int not null,
CONSTRAINT pk_i_id_01 PRIMARY KEY(i_id)
)
Допустим, в административной области я хочу показать таблицу с каждой темой блога и всеми назначенными ему изображениями, независимо от того, имеет ли он 1 изображение или 5 изображений.
В настоящее время я делаю это так
$query = $this->db->get("blog");
foreach($query->result() as $qr)
{
echo $qr->b_title . "<br />";
$query2 = $this->db->get_where("images", array('i_b_id'=>$qr->b_id));
foreach($query2->result() as $qr2)
{
echo $qr2->i_image . "<br />";
}
echo "<hr />\n";
}
Мой вопрос, есть ли способ сделать это с 1 запросом вместо потенциально 30 или сколько там постов?
Я пытался сделать это с помощью объединения, но показывалось только первое изображение.
$this->db->join("images", "i_b_id = b_id");
$query = $this->db->get("blog");
foreach($query->result() as $qr)
{
echo $qr->b_title . "<br />";
$query2 = $this->db->get_where("images", array('i_b_id'=>$qr->b_id));
//is there another for loop i can do here?
echo $qr->i_image . "<br />";
echo "<hr />\n";
}