0

我有两个 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 输出。

问候,

4

1 回答 1

0

使用以下查询在单个查询中获取数据

          select *  from table_b left inner join  table_a  on foreignkey_keyA=keyA 
于 2013-08-12T07:13:09.207 回答