【发布时间】:2014-02-07 00:19:20
【问题描述】:
我正在尝试使用 INNER JOIN 对我的数据库进行 PHP PDO 调用。
我尝试做的三个连接如下:
KC_Orders -- Database Table Name
--orderNumber -- Relation Field
KC_Payments -- Database Table Name
--orderNumber -- Relation Field
KC_OrderStatus -- Database Table Name
--OrderNumber -- Relation Field
我想从表格中获取更多信息,而不仅仅是订单号。
我对数据库的调用如下:
$sql = "SELECT * from `KC_Orders` INNER JOIN `KC_Payments` INNER JOIN `KC_OrderStatus`";
$ThreeRecentOrders = $db->query($sql);
然后在我的foreach 语句中,我有以下显示结果。
<?php foreach($ThreeRecentOrders as $order): ?>
<?php $orderNumber = $order['orderNumber']; ?>
<tr>
<th><?php echo $orderNumber; ?></th>
<th><?php echo $order['billingFName']; ?> <?php echo $order['billingLName']; ?></th>
<th>$<?php echo number_format($order['order_total']/100,2); ?></th>
<th><?php echo $order['statusID']; ?></th>
</tr>
<?php endforeach; ?>
现在,一切正常但是我在系统中只有两个订单,这意味着到目前为止每个数据库中有两行。 3 database joins 和 2 rows in each field 3x2=6 我在 foreach 的表中得到 6 个结果。它占用每一行并回显一个结果。这显然不是我的本意。我需要向数据库调用或 sql 添加什么来解决这个问题?
【问题讨论】:
-
你加入什么?我希望看到像
... INNER JOIN KC_Payments USING (orderNumber) ...或类似的东西,你似乎没有加入任何外键索引。 -
也许如果你添加
ON子句,如:SELECT * FROM KC_Orders o INNER JOIN KC_Payments p ON o.orderNumber = p.orderNumber ...?