2014-02-07 3 views
2

INNER JOIN을 사용하여 데이터베이스에 PHP PDO 호출을 시도하고 있습니다.PHP PDO에서 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 joins with 2 rows in each field3x2=6 foreach에서 내 테이블에 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

관련 문제