何か間違ったことをしているのだろうか、それともこれは MySQL ですべてが処理される方法の単なる癖なのだろうかと思っています。セットアップは次のとおりです:(この正確なトピックは他のどこにも見つからないようです)
orderとmenuの 2 つのテーブルがあります。
menuには、各行にid
' (アイテム)、'item
'、および 3 つの価格 ('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)...配列の応答で重複データが返されるのはなぜですか?
私は何か間違ったことをした?私は何かを見落としていますか?
それは大きな問題ではありません。最終結果には影響しません。できるだけ正確にしたいだけです。
お時間をいただきありがとうございます。:)