我有两个 MySQL 表:
CREATE TABLE IF NOT EXISTS `table_a` (
`keyA` int(11) NOT NULL AUTO_INCREMENT,
`somevalue1` varchar(100) NOT NULL,
`somevalue2` int(11) NOT NULL,
PRIMARY KEY (`keyA`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
CREATE TABLE IF NOT EXISTS `table_b` (
`foreignkey_keyA` int(11) NOT NULL,
`something1` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO `table_a` (`keyA`, `somevalue1`, `somevalue2`) VALUES
(1, 'Data 1', 0),
(2, 'Data 2', 0);
INSERT INTO `table_b` (`foreignkey_keyA`, `something1`) VALUES
(1, 0),
(1, 0);
现在我想从“table_a”的 SELECT 查询中为每个条目从表“table_b”中获取数据:
$finalData = array();
$rows = "SELECT * FROM table_a";
foreach ($r in $rows)
{
$r['table_b_data'] = "SELECT * FROM table_b WHERE foreignkey_keyA=" . $r['keyA'];
$finalData[] = $r;
}
echo(json_encode($finalData);
这样最终的 json 结果如下所示:
[
{"keyA":1, "somevalue1":"Data 1", "somevalue2":0,
"table_b_data":[
{"foreignkey_keyA":1, "something1":0},
{"foreignkey_keyA":1, "something1":0}
]
}
]
这样做的问题是,在每个foreach
循环中都会执行一个 MySQL 查询。有没有更好(更快)的方法来做到这一点?我能想到的另一个解决方案是JOIN
在表之间使用 a ,但是我必须对结果数组进行后处理以匹配 JSON 输出。
问候,