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?

  1. <?
  2. //date mam w takiej postaci w bazie ( nie ja bazę tworzyłem)
  3. $czas10='20160101';
  4. $czas20='20161231';
  5.  
  6. $pytanie10d="SELECT distinct DAPLNR, DADWNR, DADWNZ, DADWIM
  7. FROM DAWCY
  8. INNER JOIN ODDANIA on DADWNR=ODDWNR AND DAPLNR=ODPLNR
  9. WHERE
  10. ODDNDT Between '".$czas10."' And '".$czas20."' AND ODDNKD in('EK', 'EP', 'EA', 'E5','ER') AND ODWSDP not in ('P','p') order by DADWNZ ASC";
  11.  
  12. $result13 = odbc_exec($connect, $pytanie10d) or die( odbc_error());
  13.  
  14.  
  15. //Nie sugerujcie się nazwami kolumn w tabeli, to bez znaczenia
  16. ?>
  17. <table border="1">
  18. <tr bgcolor="#24FF19"><td width="3%" align="center"><b>Lp.</b></td>
  19. <td align="center"><b>Nr plac.</b></td>
  20. <td align="center"><b>Nazwa</b></td>
  21. <td align="center"><b>Plac</b></td>
  22. <td align="center"><b>Nr don.</b></td>
  23. <td align="center"><b>Pojemnik</b></td>
  24. <td align="center"><b>Zwrot</b></td>
  25. <td align="center"><b>Zwrot</b></td>
  26. </tr>
  27.  
  28. <?php
  29.  
  30. $x=0;
  31.  
  32. while(odbc_fetch_row($result13))
  33.  
  34. {
  35. $a113 = odbc_result($result13, 1);
  36. $a213 = odbc_result($result13, 2);
  37. $a313 = odbc_result($result13, 3);
  38. $a413 = odbc_result($result13, 4);
  39.  
  40.  
  41. //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
  42. //a także wybrać najnowszy wpis, który jest mniejszy od $czas10 czyli będzie to np. 20150816
  43. //Z poniższego zapytania obie te wartości otrzymuję prawidłowo
  44. //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
  45.  
  46. $pytanie10d1="SELECT
  47. (SELECT MIN(ODDNDT) as minddon FROM ODDANIA WHERE
  48. ODDNDT Between '".$czas10."' And '".$czas20."' AND ODDWNR='".$a213."' AND odPLNR='".$a113."' AND ODDNKD in('EK', 'EP', 'EA', 'E5','ER')) AS DDON1,
  49. (SELECT MAX(ODDNDT) as maxddon FROM ODDANIA WHERE
  50. ODDNDT<'".$czas10."' AND OdDWNR='".$a213."' AND ODPLNR='".$a113."' AND ODDNKD in('EK', 'EP', 'EA', 'E5','ER')) AS DDON2
  51. from ODDANIA where OdDWNR='".$a213."' AND odPLNR='".$a113."' ";
  52.  
  53. $result13a = odbc_exec($connect, $pytanie10d1) or die( odbc_error());
  54.  
  55. odbc_fetch_row($result13a);
  56.  
  57. $a113a = odbc_result($result13a, 1);
  58. $a114a = odbc_result($result13a, 2);
  59.  
  60. if ($a114a ==0){
  61. $a114a=$a113a;
  62. }
  63. else{
  64. $a114a=$a114a;
  65. }
  66.  
  67. $x++;
  68. $roznica= $a113a-$a114a;
  69.  
  70. if ($roznica>=20000){
  71.  
  72.  
  73. echo '<tr bgcolor='.$kolor.'><td align="center">'.$x.'</td>
  74. <td align="center">'.$a113.'</td>
  75. <td align="center">'.$a213.'</td>
  76. <td align="center">'.$a313.'</td>
  77. <td align="center">'.$a413.'</td>
  78. <td align="center">'.$a114a.'</td>
  79. <td align="center">'.$a113a.'</td>
  80. <td align="center">'.$roznica.'</td></tr>';
  81. }
  82. else {
  83. }
  84. }
  85.  
  86. ?>
  87. </table>
  88.  
  89.  


Gdyby sie dało uzyskać cały zapis w pierwszym zapytaniu, to chciałbym go otrzymać w takiej formie:
$ilosc10d = odbc_num_rows($result10d);