【发布时间】:2011-06-11 13:29:04
【问题描述】:
我想知道我是否做错了什么,或者这只是 MySQL 处理一切的方式的一个怪癖。这是设置:(我似乎无法在其他任何地方找到这个确切的主题)
我有两个表 order 和 menu。
menu 有一个“id”(用于项目),一个“item ' 和每行三个价格('prc1' 'prc2' 'prc3')。
menu +----+----------+------+------+------+
|'id'| 'item' |'prc1'|'prc2'|'prc3'|
+----+----------+------+------+------+
| 1 | 'tshirt' | 3.00 | 4.50 | 4.00 |
| 2 | 'socks' | 1.00 | 2.50 | 2.00 |
+----+----------+------+------+------+
order 还有一个与订单菜单匹配的项目 ID ('i_id'),以及我使用的整数用于稍后在 php ('prc_id') 中过滤价格。
order +------+--------+
|'i_id'|'prc_id'|
+--------+------+
| 1 | 1 | # i_id matches id - tshirt and informs to use prc1
| 2 | 3 | # i_id matchis id - socks and uses prc3
+--------+------+
我使用 JOIN 将订单与商品匹配
"SELECT order.prc_id, menu.item, menu.prc1, menu.prc2, menu.prc3
FROM order
LEFT JOIN menu
ON order.i_id = menu.id"
然后我得到结果,最初为了确保一切顺利,我打印了数组:
$result = mysql_query($query)
while($row = mysql_fetch_array($result))
{
print_r($row);
}
这是我返回的数组(显然是初始测试的虚拟信息):
Array
(
[0] => 1 [prc_id] => 1 #the value (1) for 'prc_id' is given twice
[1] => tshirt [item] => tshirt #the value (tshirt) for 'item' is given twice
[2] => 3.00 [prc1] => 3.00 #the value (3.00) for 'prc1' is given twice
[3] => 4.50 [prc2] => 4.50 #etc
[4] => 4.00 [prc3] => 4.00
[0] => 3 [prc_id] => 3
[1] => socks [item] => socks
[2] => 1.00 [prc1] => 1.00
[3] => 2.50 [prc2] => 2.50
[4] => 2.00 [prc3] => 2.00
)
所以我的问题(最后,对吗?xD)...为什么在数组响应中发回重复数据?
我做错了吗?我忽略了什么吗?
这不是一个大问题,它不会影响我的最终结果,我只是希望尽可能精确。
感谢您的宝贵时间。 :)
【问题讨论】:
标签: sql mysql arrays join duplicate-data