加入两个数据库表,然后将结果分组为子阵列
我很难关联两个数据库查询的结果集。我的“ barang”行和“ harga”行之间可能有零或许多相关的行。
我的codeigniter查询看起来像这样:
$barang = $this->db
->select('pj_barang.*')
->where('dihapus', 'tidak')
->get('pj_barang')->result_array();
$harga = $this->db
->select('pj_detailsupplier.*')
->join('pj_barang', 'pj_detailsupplier.id_barang = pj_barang.id_barang', 'right')
->get('pj_detailsupplier')
->result_array();
这些查询填充了类似的数组结构(为简单起见,许多列删除了许多列):
$barang=array(
[
'id_barang' => 01,
'nama_barang' => "laptop",
'merk' => 'lenovo'
],
[
'id_barang' => 02,
'nama_barang' => "RAM",
'merk' => 'lenovo'
],
[
'id_barang' => 03,
'nama_barang' => "Keyborad",
'merk' => 'lenovo'
],
);
$harga=array(
[
'id_barang' => 01,
'harga' => 2000000,
],
[
'id_barang' => 02,
'harga' => 100000,
]
);
我想加入它们以形成一个多维数组,其中包含由id_barang
分组的数据子集,但是我的代码仍然错了。
$result=array();
foreach ($barang as $value) {
foreach ($harga as $k => $val) {
$result[$value['id_barang'] = $val["id_barang"]] = [
'harga' => $val["harga"]
];
}
}
echo "<pre>";
echo print_r($result);
输出是:
Array
(
[1] => Array
(
[harga] => 2000000
)
[2] => Array
(
[harga] => 100000
)
)
所需的结果:
Array
(
[0] => Array
(
[id_barang] => 01
[nama_barang] => laptop
[merk] => lenovo
[dataharga] => Array
(
[0] => Array
(
[id_barang] => 01
[harga] => 2000000
)
)
)
[1] => Array
(
[id_barang] => 02
[nama_barang] => RAM
[merk] => lenovo
[dataharga] => Array
(
[1] => Array
(
[id_barang] => 02
[harga] => 100000
)
)
)
[2] => Array
(
[id_barang] => 03
[nama_barang] => Keyboard
[merk] => lenovo
[dataharga] => Array
(
[2] => Array
(
[id_barang] => ""
[harga] => ""
)
)
)
)
I am having a hard time relating the result set of two database queries. There can be zero or many related rows between my "barang" rows and my "harga" rows.
My CodeIgniter queries look like this:
$barang = $this->db
->select('pj_barang.*')
->where('dihapus', 'tidak')
->get('pj_barang')->result_array();
$harga = $this->db
->select('pj_detailsupplier.*')
->join('pj_barang', 'pj_detailsupplier.id_barang = pj_barang.id_barang', 'right')
->get('pj_detailsupplier')
->result_array();
These queries populate array structures like these (many columns removed for simplicity):
$barang=array(
[
'id_barang' => 01,
'nama_barang' => "laptop",
'merk' => 'lenovo'
],
[
'id_barang' => 02,
'nama_barang' => "RAM",
'merk' => 'lenovo'
],
[
'id_barang' => 03,
'nama_barang' => "Keyborad",
'merk' => 'lenovo'
],
);
$harga=array(
[
'id_barang' => 01,
'harga' => 2000000,
],
[
'id_barang' => 02,
'harga' => 100000,
]
);
I want to join them to form a multidimensional array with subsets of data grouped by id_barang
, but my code is still wrong.
$result=array();
foreach ($barang as $value) {
foreach ($harga as $k => $val) {
$result[$value['id_barang'] = $val["id_barang"]] = [
'harga' => $val["harga"]
];
}
}
echo "<pre>";
echo print_r($result);
The output is:
Array
(
[1] => Array
(
[harga] => 2000000
)
[2] => Array
(
[harga] => 100000
)
)
The desired result:
Array
(
[0] => Array
(
[id_barang] => 01
[nama_barang] => laptop
[merk] => lenovo
[dataharga] => Array
(
[0] => Array
(
[id_barang] => 01
[harga] => 2000000
)
)
)
[1] => Array
(
[id_barang] => 02
[nama_barang] => RAM
[merk] => lenovo
[dataharga] => Array
(
[1] => Array
(
[id_barang] => 02
[harga] => 100000
)
)
)
[2] => Array
(
[id_barang] => 03
[nama_barang] => Keyboard
[merk] => lenovo
[dataharga] => Array
(
[2] => Array
(
[id_barang] => ""
[harga] => ""
)
)
)
)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
更多
发布评论
评论(2)
尝试以下代码,看看它是否有效:
Try the following code and see whether it works:
以您的后续问题当
ID_BARANG
不是null时。然后,使用php在
id_barang
值上迭代行和组,然后将“ Harga”数据推入dataharga
subarre。推荐(未经测试的)代码签名代码:
Judging by your subsequent question, I'll recommend a LEFT JOIN and only link the
pj_detailsupplier
table whenid_barang
is not null.Then use PHP to iterate the rows and group on the
id_barang
value and push "harga" data into thedataharga
subarray.Recommended (untested) CodeIgniter code: