2014-02-07 139 views
2

我正在嘗試使用INNER JOIN對我的數據庫執行PHP PDO調用。PHP PDO select with INNER JOIN

三個加入,我想說明的是如下:

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 field3x2=6我在我的表中得到了6個結果。它正在逐行並回應結果。這顯然不是我想要的。我需要添加到數據庫調用或SQL來解決這個問題?

+0

什麼是你參加嗎?我期望看到類似'... INNER JOIN KC_Payments USING(orderNumber)...'或類似的內容,您似乎沒有加入任何外鍵索引。 – CD001

+0

也許如果你添加'ON'子句,如:SELECT * FROM KC_Orders o INNER JOIN KC_Payments p ON o.orderNumber = p.orderNumber ...''? –

回答

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 
+0

這會導致爲'foreach()'提供無效的參數,一旦我重新加載頁面。這意味着電話沒有返回任何東西?對? – user3271851

+0

它顯然應該工作......我不喜歡'pdo' – user3271851

+0

我想當你輸入一切正確的作品。謝謝你! – user3271851