PHP PDO选择INNER JOIN

时间:2014-02-07 00:19:21

标签: php sql pdo

我正在尝试使用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 joins2 rows in each field 3x2=6我在foreach的桌子上得到了6个结果。它占据了每一行并回应了结果。这显然不是我的意图。我需要添加到数据库调用或sql来解决此问题?

1 个答案:

答案 0 :(得分:1)

您需要实际指定要加入的列

select * from kc_orders 
    inner join kc_payments 
        on kc_orders.orderNumber = kc_payments.order_number 
    inner join kc_orderStatus 
        on kc_orders.orderNumber = kc_orderStatus.orderNumber