MySQL несколько соединений - как я могу отобразить данные? (используя PHP) - PullRequest
1 голос
/ 14 апреля 2011

Хорошо, я знаю, что это глупо, но я застрял, и мне нужен удар в голову.У меня есть 3 таблицы (заказы, элементы заказа, продукты), и я использую 2 левых внешних соединения в запросе для отображения истории заказов в разделе клиентов:

SELECT * FROM orderitems oi, orders o
LEFT OUTER JOIN product p ON p.dbarcode = oi.orderitems_item
WHERE o.order_code = oi.orderitems_ordercode 
    AND oi.orderitems_ordercode = '".$_GET['ordercode']."'` 

Я могу отобразить строку для каждого продуктав таблице order_items, но я не могу отобразить (отразить) общую сумму, которая содержится в поле orders.order_amount, я предполагаю, что это связано с тем, что поле имеет несколько экземпляров или что-то еще.Как отобразить данные в результате объединения нескольких таблиц?

Редактировать для Quassnoi:

Я перебираю результаты и создаю строку таблицы для каждой из них, а после цикла хочудля отображения общей суммы:

  <? do { ?>
  <tr>
    <td><? echo $row_OrderItems['dbarcode']; ?></td>
    <td><? echo $row_OrderItems['name']; ?></td>
    <td><? echo $row_OrderItems['orderitems_quantity']; ?></td>
    <td><? echo $row_OrderItems['price']; ?></td>
  </tr>
  <? } while ($row_OrderItems = mysql_fetch_assoc($OrderItems)); ?>

  <tr>
    <td colspan="5">Total order amount (incl. shipping and handling): &euro; <? echo $row_OrderItems['order_amounteuro']; ?></td>
  </tr>

Ответы [ 3 ]

3 голосов
/ 14 апреля 2011

o.order_amount будет повторяться в каждом ряду, просто возьмите первый.

И, конечно же, никогда не используйте это:

oi.orderitems_ordercode = '".$_GET['ordercode']."'` 

без mysql_real_escape_string.

image

1 голос
/ 14 апреля 2011
<? do { ?>
  <tr>
    <td><? echo $row_OrderItems['dbarcode']; ?></td>
    <td><? echo $row_OrderItems['name']; ?></td>
    <td><? echo $row_OrderItems['orderitems_quantity']; ?></td>
    <td><? echo $row_OrderItems['price']; ?></td>
  </tr>
  <? 
$total = $row_OrderItems['order_amounteuro']; // store the total, before you loop past the last row
} while ($row_OrderItems = mysql_fetch_assoc($OrderItems)); ?>

  <tr>
    <td colspan="5">Total order amount (incl. shipping and handling): &euro; <? echo $total; ?></td>
  </tr>
0 голосов
/ 14 апреля 2011

Просто к вашему сведению, эта часть вашего заявления:

SELECT * FROM orderitems oi, orders o 
LEFT OUTER JOIN product p ON p.dbarcode = oi.orderitems_item

извлекает все из orderitems, orders и products. Добавьте * к таблице, из которой вы хотите получить все поля, или перепишите ее, чтобы получить определенные поля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...