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.
$query="SELECT ODPLNR, ODDWNR, ODDNR1, ODDNKD, ODDNNR, ODDNDT FROM ODDANIA
WHERE
ODDNDT Between '20120101' And '20121231' AND ODDNKD ='E5' OR
ODDNDT Between '20120101' And '20121231' AND ODDNKD ='EK' OR
ODDNDT Between '20120101' And '20121231' AND ODDNKD ='EP'
";
$result = odbc_exec
($connect, $query) or
die( odbc_error
());
while($set=odbc_fetch_array($result)){
$ODDWNR = $set['ODDWNR'] ;
if($set['ODDNR1']=='H'){
$element[$ODDWNR] = 'H';
}
if($set['ODDNR1']=='R' && (!isset($element[$ODDWNR]) || $element[$ODDWNR]!='H')){ $element[$ODDWNR] = 'R';
}
if($set['ODDNR1']=='P' && (!isset($element[$ODDWNR]) || $element[$ODDWNR]!='H' && $element[$ODDWNR]!='R')){ $element[$ODDWNR] = 'P';
}
if($set['ODDNR1']=='A' && (!isset($element[$ODDWNR] )|| $element[$ODDWNR]!='H' && $element[$ODDWNR]!='R' && $element[$ODDWNR]!='P')){ $element[$ODDWNR] = 'A';
}
if($set['ODDNR1']=='B' && (!isset($element[$ODDWNR] )|| $element[$ODDWNR]!='H' && $element[$ODDWNR]!='R' && $element[$ODDWNR]!='P' && $element[$ODDWNR]!='A')){ $element[$ODDWNR] = 'B';
}
foreach ($element as $el => $atr){
if ($atr=='H') {
$tab_h[] =$el;}
if ($atr=='R') {
$tab_r[] =$el;}
if ($atr=='P') {
$tab_p[] =$el;}
if ($atr=='A') {
$tab_a[] =$el;}
if ($atr=='B') {
$tab_b[] =$el;}
}}
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
$query="SELECT CONCAT(ODPLNR, ODDWNR) as numer, ODDNR1, ODDNKD, ODDNNR, ODDNDT FROM ODDANIA
WHERE
ODDNDT Between '20120101' And '20121231' AND ODDNKD ='E5' OR
ODDNDT Between '20120101' And '20121231' AND ODDNKD ='EK' OR
ODDNDT Between '20120101' And '20121231' AND ODDNKD ='EP'
";
$result = odbc_exec
($connect, $query) or
die( odbc_error
());
while($set=odbc_fetch_array($result)){
$ODDWNR = $set['numer'] ;
//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:
$query="SELECT ODPLNR, ODDWNR, ODDNR1, ODDNKD,ODDNNR, ODDNDT FROM ODDANIA
WHERE
ODDNDT Between '20120101' And '20121231' AND ODDNKD ='E5' OR
ODDNDT Between '20120101' And '20121231' AND ODDNKD ='EK' OR
ODDNDT Between '20120101' And '20121231' AND ODDNKD ='EP'
";
$result = odbc_exec
($connect, $query) or
die( odbc_error
());
while($set=odbc_fetch_array($result)){
$ODDWNR = $set['ODDWNR'] ;
$ODPLNR = $set['ODPLNR'];
if($set['ODDNR1']=='H'){
$element[$ODDWNR && $ODPLNR] = 'H';
} //dalsza cześć analogicznie przerobiona
//lub taki sposób
while($set=odbc_fetch_array($result)){
$numer1 = $set['ODDWNR'] ;
$numer2 = $set['ODPLNR'];
$ODDWNR=$numer1 && $numer2;
if($set['ODDNR1']=='H'){
$element[$ODDWNR] = 'H';
}
//lub tak
while($set=odbc_fetch_array($result)){
$ODDWNR = $set['ODDWNR'] && $set['ODPLNR'];
if($set['ODDNR1']=='H'){
$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?