Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Zmiana zapytanie lub zmiana zmiennych
dopal
post 15.02.2013, 08:51:15
Post #1





Grupa: Zarejestrowani
Postów: 131
Pomógł: 0
Dołączył: 9.02.2009

Ostrzeżenie: (0%)
-----


Witam,

Mam tabelę ODDANIA, w niej jest ok 40 pól, przy tym co chcę zrobić interesuje mnie tylko 6. Baza nie jest moja, ja jedynie z niej korzystam dla usprawnienia pracy.
Poniżej jest kod, który działa przy takich założeniach jak są zrobione.
  1. $query="SELECT ODPLNR, ODDWNR, ODDNR1, ODDNKD, ODDNNR, ODDNDT FROM ODDANIA
  2. WHERE
  3. ODDNDT Between '20120101' And '20121231' AND ODDNKD ='E5' OR
  4. ODDNDT Between '20120101' And '20121231' AND ODDNKD ='EK' OR
  5. ODDNDT Between '20120101' And '20121231' AND ODDNKD ='EP'
  6. ";
  7. $result = odbc_exec($connect, $query) or die( odbc_error());
  8.  
  9. $element = array();
  10.  
  11. while($set=odbc_fetch_array($result)){
  12.  
  13. $ODDWNR = $set['ODDWNR'] ;
  14.  
  15.  
  16. if($set['ODDNR1']=='H'){
  17. $element[$ODDWNR] = 'H';
  18. }
  19. if($set['ODDNR1']=='R' && (!isset($element[$ODDWNR]) || $element[$ODDWNR]!='H')){
  20. $element[$ODDWNR] = 'R';
  21. }
  22. if($set['ODDNR1']=='P' && (!isset($element[$ODDWNR]) || $element[$ODDWNR]!='H' && $element[$ODDWNR]!='R')){
  23. $element[$ODDWNR] = 'P';
  24. }
  25. if($set['ODDNR1']=='A' && (!isset($element[$ODDWNR] )|| $element[$ODDWNR]!='H' && $element[$ODDWNR]!='R' && $element[$ODDWNR]!='P')){
  26. $element[$ODDWNR] = 'A';
  27. }
  28. if($set['ODDNR1']=='B' && (!isset($element[$ODDWNR] )|| $element[$ODDWNR]!='H' && $element[$ODDWNR]!='R' && $element[$ODDWNR]!='P' && $element[$ODDWNR]!='A')){
  29. $element[$ODDWNR] = 'B';
  30. }
  31. $tab_h=array();
  32. $tab_r=array();
  33. $tab_p=array();
  34. $tab_a=array();
  35. $tab_b=array();
  36.  
  37. foreach ($element as $el => $atr){
  38. if ($atr=='H') {
  39. $tab_h[] =$el;}
  40. if ($atr=='R') {
  41. $tab_r[] =$el;}
  42. if ($atr=='P') {
  43. $tab_p[] =$el;}
  44. if ($atr=='A') {
  45. $tab_a[] =$el;}
  46. if ($atr=='B') {
  47. $tab_b[] =$el;}
  48. }}
  49.  
  50. echo 'Atrybut h: '.count($tab_h).'<br />';
  51. echo 'Atrybut r: '.count($tab_r).'<br />';
  52. echo 'Atrybut p: '.count($tab_p).'<br />';
  53. echo 'Atrybut a: '.count($tab_a).'<br />';
  54. echo 'Atrybut b: '. count($tab_b).'<br />';

Myślałem ze unikatowym polem jest ODDWNR, więc przy takim założeniu wszystko działa prawidłowo i otrzymywałem ok 16 tys. wyników. Jednak okazało się że połączenie unikatowe to połączenie ODPLNR, ODDWNR. To stanowi dopiero unikalny numer czyli np. ODPLNR=1234 ODDWNR=98765 czyli całością powinno być 123498765 i powinienem uzyskać ponad 20 tys. wyników

Próbowałem zrobić to tak
  1. $query="SELECT CONCAT(ODPLNR, ODDWNR) as numer, ODDNR1, ODDNKD, ODDNNR, ODDNDT FROM ODDANIA
  2. WHERE
  3. ODDNDT Between '20120101' And '20121231' AND ODDNKD ='E5' OR
  4. ODDNDT Between '20120101' And '20121231' AND ODDNKD ='EK' OR
  5. ODDNDT Between '20120101' And '20121231' AND ODDNKD ='EP'
  6. ";
  7. $result = odbc_exec($connect, $query) or die( odbc_error());
  8.  
  9. $element = array();
  10.  
  11. while($set=odbc_fetch_array($result)){
  12.  
  13. $ODDWNR = $set['numer'] ;
  14. //dalsza część kodu bez zmian

Przy takim zapisie w wynikach otrzymuję:
Atrybut h: 1
Atrybut r: 0
Atrybut p: 0
Atrybut a: 0
Atrybut b: 0
co oczywiście nie jest oprawdą.

Dalej próbowałem tak:
  1. $query="SELECT ODPLNR, ODDWNR, ODDNR1, ODDNKD,ODDNNR, ODDNDT FROM ODDANIA
  2. WHERE
  3. ODDNDT Between '20120101' And '20121231' AND ODDNKD ='E5' OR
  4. ODDNDT Between '20120101' And '20121231' AND ODDNKD ='EK' OR
  5. ODDNDT Between '20120101' And '20121231' AND ODDNKD ='EP'
  6. ";
  7. $result = odbc_exec($connect, $query) or die( odbc_error());
  8.  
  9.  
  10. $element = array();
  11.  
  12. while($set=odbc_fetch_array($result)){
  13.  
  14. $ODDWNR = $set['ODDWNR'] ;
  15. $ODPLNR = $set['ODPLNR'];
  16.  
  17. if($set['ODDNR1']=='H'){
  18. $element[$ODDWNR && $ODPLNR] = 'H';
  19.  
  20. } //dalsza cześć analogicznie przerobiona
  21.  
  22. //lub taki sposób
  23. while($set=odbc_fetch_array($result)){
  24.  
  25. $numer1 = $set['ODDWNR'] ;
  26. $numer2 = $set['ODPLNR'];
  27.  
  28. $ODDWNR=$numer1 && $numer2;
  29.  
  30. if($set['ODDNR1']=='H'){
  31. $element[$ODDWNR] = 'H';
  32.  
  33. }
  34. //lub tak
  35. while($set=odbc_fetch_array($result)){
  36.  
  37. $ODDWNR = $set['ODDWNR'] && $set['ODPLNR'];
  38.  
  39. if($set['ODDNR1']=='H'){
  40. $element[$ODDWNR] = 'H';


I przy takich próbach zawsze było w wynikach
Atrybut h: 1
Atrybut r: 0
Atrybut p: 0
Atrybut a: 0
Atrybut b: 0

Gdzie może tkwić problem?
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.07.2025 - 07:47