我在編寫下面的代碼時遇到了問題。我從兩個不同的表格中提取數據,並使用內部聯接將列鏈接在一起,工作正常。從headkey
列中獲取數據時,可能有多行使用相同的「關鍵字」來標識訂單,然後我需要查看Delivery
列以查看訂單是否具有值1或-1。我需要能夠將1和-1加在一起,所以如果一個訂單有一個1和一個等於0的-1,這意味着交貨被取消了。但是,如果訂單有1 +(-1)+1,那麼它將等於1.在這種情況下,這是交貨。如果headkey
列中的值匹配,是否可以在delivery
列中添加值?我想使用多維數組,但我沒有完全理解它們能夠實現它們。PHP - 如果其他列中的值重複,Mysql在單列中添加值
<?php
$TransactionSql = "
SELECT apcshead.Key
, apcshead.DateInvoiced
, apcshead.InvNum
, apcsitem.Headkey
, apcsitem.ItemID
, apcsitem.Quantity
, apcshead.CustomerCode
, customers.BillTo1
, customers.BillTo2
, customers.City
, customers.PostCode
FROM customers
INNER JOIN (apcshead INNER JOIN apcsitem ON apcshead.Key = apcsitem.Headkey)
ON customers.CustomerCode = apcshead.CustomerCode";
$rs=odbc_exec($conn,$TransactionSql);
while($row = odbc_fetch_array($rs))
{
$Key = odbc_result($rs,"Key");
$DateInvoiced = odbc_result($rs,"DateInvoiced");
$InvNum = odbc_result($rs,"InvNum");
$Headkey = odbc_result($rs,"Headkey");
$ItemID = odbc_result($rs,"ItemID");
$Quantity = odbc_result($rs,"Quantity");
$CustomerCode = odbc_result($rs,"CustomerCode");
$DateInvoiced = new DateTime($DateInvoiced);
$DateInvoiced_date = $DateInvoiced->format('m-d-Y');
$DeliverySql = "SELECT Quantity, HeadKey FROM apcsitem WHERE HeadKey=20008";
if ($DateInvoiced_date == $Today)
{
if ($ItemID == 'Delivery' xor $ItemID == 'DeliveryCharge')
{
echo '
<td class="td" valign="top">' . $Key . '</td>
<td class="td" valign="top">' . $DateInvoiced_date . '</td>
<td class="td" valign="top">' . $InvNum . '</td>
<td class="td" valign="top">' . $Headkey . '</td>
<td class="td" valign="top">' . $ItemID . '</td>
<td class="td" valign="top">' . $Quantity . '</td>
<td class="td" valign="top">' . $CustomerCode . '</td>
</tr> ';
}
}
}
?>
下面是該表的快照。
精簡版
$TransactionSql = "SELECT * FROM apcsitem";
$rs=odbc_exec($conn,$TransactionSql);
while($row = odbc_fetch_array($rs))
{
$Key = odbc_result($rs,"HeadKey");
$ItemID = odbc_result($rs,"ItemID");
$Quantity = odbc_result($rs,"Quantity");
if ($ItemID == 'Delivery' xor $ItemID == 'DeliveryCharge')
{
echo '
<td class="td" valign="top">' . $Key . '</td>
<td class="td" valign="top">' . $ItemID . '</td>
<td class="td" valign="top">' . $Quantity . '</td>
</tr> ';
}
}
下面是被一個困惑的員工:)
所以基本上我需要做一個真正的交易的例子能夠做的是如果第二列包含交貨或deliveryCharge將其過濾掉。然後,如果它們中的任何一個具有重複的HeadKey(第一列中的值)以僅爲經過濾的列添加最後一列的值。 AKA,與HeadKey相同的。在上面的圖片中,他們有Delivery和DeliveryCharge。他們添加並取消了他們。如果您添加基於組(交付)的最後一列,結果爲0,並且如果您將最後一列添加到組(DeliveryCharge),您也將得到0.事實上這意味着畢竟沒有交付!
在您的示例中的所有行「交付」或「送貨費」。所以所有的行都會被過濾掉。所以這就是爲什麼你不會得到任何東西。優缺點是無關緊要的 - 我覺得你讓這個問題比它需要的複雜得多。如果我是你,我會重新開始,用最少的代碼來充分說明問題。 – Strawberry