Когда я повторяю свой запрос на экране и запускаю непосредственно в 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
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
EDIT 2
На приведенном ниже рисунке показано, какие SSMS выводятся сверху, а нижнее изображение – это то, что мои php-выходы
$ db-> loadObjectList () – это функция Joomla, которая вернет список строк. Если вы хотите только одну строку, вы должны использовать $ db-> loadObject () вместо