簡體   English   中英

PHP返回多行

[英]PHP Returning Multiple Rows

當我在屏幕上回顯我的查詢並直接在SSMS中運行時,我返回了一行,這正是我想要的。 當我在php中運行此查詢時,我得到了多行返回(似乎對每個經銷商來說都是一個)。

我應該在此語法中進行哪些更改,以使我只有1行,而php中的總計顯示在屏幕上,就像SSMS中發生的情況一樣? ->而且,如果我將表格的結果復制/粘貼到Excel中以進行嘗試和排序,那么我所擁有的只是在表格中顯示0,而不是像直接在SSMS中查詢時看到的那樣的實際數據

    {
$startdate = $_POST['startdate'];
$enddate = $_POST['enddate'];
$Dealer = $_POST['dealer'];

$option = array();
$option['driver'] = 'mssql';
$option['host'] = '192.5.100.23';
$option['user'] = 'username';
$option['password'] = 'passs';
$option['database'] = 'test';
$option['prefix'] = '';
$db = JDatabase::getInstance($option);
$query11 = $db->getquery11(true);
$query11 = "SELECT
MAX(A.Value1) AS Value1,
MAX(A.Value10) AS WorkinIT,
MAX(A.Value11) AS OTG
FROM
(
SELECT
ZT1.Dealer,
SUM(ISNULL(ZT1.[Value1],0)) AS Value1,
0 AS Value10,
0 AS Value11
FROM ROCK AS ZT1
WHERE ZT1.[PUD] >= '$startdate'
AND ZT1.[PUD] <= '$enddate'";
if ($Dealer != 'All') {
$query11 .= " AND ZT1.Dealer = '$Dealer'";
}
$query11 .= " GROUP BY ZT1.Dealer
UNION ALL
SELECT
ZT2.Dealer,
0 As Value1,
0 AS Value10,
0 AS Value11
FROM GALL ZT2
WHERE ZT2.[sellD] >= '$startdate'
AND ZT2.[sellD] <= '$enddate'";
if ($Dealer != 'All') {
$query11 .= " AND ZT2.Dealer = '$Dealer'";
}
$query11 .= " GROUP BY ZT2.Dealer
UNION ALL
SELECT
Dealer = RTRIM(LTRIM(dealer)),
0 As Value1,
SUM(ISNULL(abc,0)) AS Value10,
0 AS Value11
FROM WorkinIT AS C1
GROUP BY dealer
UNION ALL
SELECT
Dealer = RTRIM(LTRIM(dealer)),
0 As Value1,
0 AS Value10,
SUM(ISNULL(prs,0)) AS Value11
FROM eOTG AS C2";
if ($Dealer != 'All') {
$query11 .= " WHERE C2.Dealer = '$Dealer'";
}

$query11 .= " GROUP BY dealer) AS A";
}

echo $query11;
$db->setquery11($query11);
$query11 = $db->loadObjectList();
if ($query11) 
{
?>
<table border="1">
<thead>
<tr>
<th>Value </th>
<th>OTG </th>
<th>WorkinIT </th>
</tr>
</thead>
<?php
foreach ($query11 as $res) 
{
print "<tr>";
print "<td>" . "$" . round($res->Value1) . "</td>";
print "<td>" . "$" . round($res->WorkinIT) . "</td>";
print "<td>" . "$" . round($res->OTG) . "</td>";
print "</tr>";
}
}

編輯
這是上面的語法產生的echo語句,可以在SSMS GUI中正常運行

SELECT Max(A.value1)  AS Value1, 
       Max(A.value10) AS WorkinIT, 
       Max(A.value11) AS OTG 
FROM   (SELECT ZT1.dealer, 
               Sum(Isnull(ZT1.[value1], 0)) AS Value1, 
               0                            AS Value10, 
               0                            AS Value11 
        FROM   rock AS ZT1 
        WHERE  ZT1.[pud] >= '2017-06-01' 
               AND ZT1.[pud] <= '2017-06-22' 
        GROUP  BY ZT1.dealer 
        UNION ALL 
        SELECT ZT2.dealer, 
               0 AS Value1, 
               0 AS Value10, 
               0 AS Value11 
        FROM   gall ZT2 
        WHERE  ZT2.[selld] >= '2017-06-01' 
               AND ZT2.[selld] <= '2017-06-22' 
        GROUP  BY ZT2.dealer 
        UNION ALL 
        SELECT dealer = Rtrim(Ltrim(dealer)), 
               0                   AS Value1, 
               Sum(Isnull(abc, 0)) AS Value10, 
               0                   AS Value11 
        FROM   workinit AS C1 
        GROUP  BY dealer 
        UNION ALL 
        SELECT dealer = Rtrim(Ltrim(dealer)), 
               0                   AS Value1, 
               0                   AS Value10, 
               Sum(Isnull(prs, 0)) AS Value11 
        FROM   eotg AS C2 
        GROUP  BY dealer) AS A 

編輯2
下圖顯示了頂部的SSMS輸出,下圖是我的php輸出的圖像 在此處輸入圖片說明

$ db-> loadObjectList()是Joomla函數,它將返回行列表。 如果只需要一行,則應使用$ db-> loadObject()代替

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM