Witam,
Mam napisany taki kod, który mi działa i wyświetla wyniki. Chciałbym prosić o pomoc, czy można to zrobić jednym zapytaniem, tak by w wyniku uzyskać tylko liczbę wierszy spełniających warunki?
<?
//date mam w takiej postaci w bazie ( nie ja bazę tworzyłem)
$czas10='20160101';
$czas20='20161231';
$pytanie10d="SELECT distinct DAPLNR, DADWNR, DADWNZ, DADWIM
FROM DAWCY
INNER JOIN ODDANIA on DADWNR=ODDWNR AND DAPLNR=ODPLNR
WHERE
ODDNDT Between '".$czas10."' And '".$czas20."' AND ODDNKD in('EK', 'EP', 'EA', 'E5','ER') AND ODWSDP not in ('P','p') order by DADWNZ ASC";
$result13 = odbc_exec
($connect, $pytanie10d) or
die( odbc_error
());
//Nie sugerujcie się nazwami kolumn w tabeli, to bez znaczenia
?>
<table border="1">
<tr bgcolor="#24FF19"><td width="3%" align="center"><b>Lp.</b></td>
<td align="center"><b>Nr plac.</b></td>
<td align="center"><b>Nazwa</b></td>
<td align="center"><b>Plac</b></td>
<td align="center"><b>Nr don.</b></td>
<td align="center"><b>Pojemnik</b></td>
<td align="center"><b>Zwrot</b></td>
<td align="center"><b>Zwrot</b></td>
</tr>
<?php
$x=0;
while(odbc_fetch_row($result13))
{
$a113 = odbc_result($result13, 1);
$a213 = odbc_result($result13, 2);
$a313 = odbc_result($result13, 3);
$a413 = odbc_result($result13, 4);
//Zapytanie poniżej ma w powiązaniu z pierwszym zapytaniem wyświetlić dla danej osoby najwcześniejszy (Min) zapis w danym okresie czasowym czyli np. 20160218
//a także wybrać najnowszy wpis, który jest mniejszy od $czas10 czyli będzie to np. 20150816
//Z poniższego zapytania obie te wartości otrzymuję prawidłowo
//Chciałbym by w zapytaniu była możliwość od razu wyliczenia różnicy między DDON1 a DDON2 wiekszej niż np. 20000. Obecnie robię to przez odejmowanie w php $roznica= $a113a-$a114a; i zapisaniem warunku w if
$pytanie10d1="SELECT
(SELECT MIN(ODDNDT) as minddon FROM ODDANIA WHERE
ODDNDT Between '".$czas10."' And '".$czas20."' AND ODDWNR='".$a213."' AND odPLNR='".$a113."' AND ODDNKD in('EK', 'EP', 'EA', 'E5','ER')) AS DDON1,
(SELECT MAX(ODDNDT) as maxddon FROM ODDANIA WHERE
ODDNDT<'".$czas10."' AND OdDWNR='".$a213."' AND ODPLNR='".$a113."' AND ODDNKD in('EK', 'EP', 'EA', 'E5','ER')) AS DDON2
from ODDANIA where OdDWNR='".$a213."' AND odPLNR='".$a113."' ";
$result13a = odbc_exec
($connect, $pytanie10d1) or
die( odbc_error
());
odbc_fetch_row($result13a);
$a113a = odbc_result($result13a, 1);
$a114a = odbc_result($result13a, 2);
if ($a114a ==0){
$a114a=$a113a;
}
else{
$a114a=$a114a;
}
$x++;
$roznica= $a113a-$a114a;
if ($roznica>=20000){
echo '<tr bgcolor='.$kolor.'><td align="center">'.$x.'</td> <td align="center">'.$a113.'</td>
<td align="center">'.$a213.'</td>
<td align="center">'.$a313.'</td>
<td align="center">'.$a413.'</td>
<td align="center">'.$a114a.'</td>
<td align="center">'.$a113a.'</td>
<td align="center">'.$roznica.'</td></tr>';
}
else {
}
}
?>
</table>
Gdyby sie dało uzyskać cały zapis w pierwszym zapytaniu, to chciałbym go otrzymać w takiej formie:
$ilosc10d = odbc_num_rows($result10d);
Ten post edytował dopal 8.02.2017, 12:56:07