[php][sql] zlozone zapytanie
[php][sql] zlozone zapytanie
Mam dwie tabele: jedna na ms sql server 2000 i druga na mySQL, struktura tabeli: nazwa sl_grupatw, kolumny grt_id, grt_nazwa, nazwy baz, tabel sa takie same i chcialbym zrobic cos takiego: sprawdzac czy tabela mySQL istnieje jesli nie to ja utworzyc, nastepnie sprawdzic czy w tabeli mySQL sa w ogole rekordy z ms sql server 2000 z warunkiem na grt_id a jesli ich nie ma to je dodac do tabeli mySQL i najwazniejsze jesli dane rekordy istnieja to sprawdzic czy grt_nazwa z ms sql server 2000 zgadza sie z tymi z mySQL jesli nie to je zupdate'owac a pozostale rekordy z mySQL ktore nie pasuja do rekordow z ms sql server 2000 usunac. Chce to zrobic za pomoca odbc bo inaczej niestety nie da rady jezeli ktos moglby podac mi odpowiednie warunki bo niezbyt wiem jak je sformulowac bylbym bardzo wdzieczny
Re: [php][sql] zlozone zapytanie
Doszedlem do czegos takiego, ze kasuje mi kazdy rekord z drugiej tablicy jesli nie jest zawarty w pierwszej tablicy, zlicza ilosc pozostalych wierszy po kasowaniu ale nie wiem jak zrobic: gdy ilosc grt_id w tabeli drugiej jest mniejsza niz w pierwszej to jak sprawdzic ktore grt_id z tabeli pierwszej musze dodac do drugiej?? Oto obecny kod:
[php]<?php
set_time_limit(0);
$hostms="localhost";
$hostmy="sklep";
$userms="sa";
$usermy="root";
$passms="";
$passmy="czarownik";
$tablems="sl_GrupaTw";
$tablemy="sl_grupatw";
$valuesms="grt_Id,grt_Nazwa";
$valuesmy="grt_id,grt_nazwa";
/* $connectmy=odbc_pconnect($hostmy, $usermy, $passmy);
$querymy="CREATE TABLE $tablemy (grt_Id INT NOT NULL, grt_Nazwa VARCHAR(30) NOT NULL)";
$execmy=odbc_exec($connectmy, $querymy); */
$connectms=odbc_pconnect($hostms, $userms, $passms);
$queryms1="SELECT COUNT(*) FROM $tablems";
$queryms2="SELECT $valuesms FROM $tablems";
$execms1=odbc_exec($connectms, $queryms1);
$execms2=odbc_exec($connectms, $queryms2);
$ms_licznik=odbc_result($execms1,1);
$i1="0";
while(odbc_fetch_row($execms2)){
$id[$i1]=odbc_result($execms2,1);
$nazwa[$i1]=odbc_result($execms2,2);
$i1++;
}
$wart_tab_id="'$id[0]'";
for($l1=1;$l1<$ms_licznik;$l1++){
$wart_tab_id.=", '$id[$l1]'";
}
$wart_tab_nazwa="'$nazwa[0]'";
for($l2=1;$l2<$ms_licznik;$l2++){
$wart_tab_nazwa.=", '$nazwa[$l2]'";
}
$wart_ms_id=array($wart_tab_id);
$wart_ms_nazwa=array($wart_tab_nazwa);
echo("$wart_tab_id<br>$wart_tab_nazwa<br>");
$connectmy=odbc_pconnect($hostmy, $usermy, $passmy);
$querymy1="SELECT COUNT(*) FROM $tablemy WHERE grt_id NOT BETWEEN '".$id[0]."' AND '".$ms_licznik."'";
$execmy1=odbc_exec($connectmy, $querymy1);
$my_licznik_zlw=odbc_result($execmy1,1);
$querymy2="SELECT COUNT(*) FROM $tablemy";
$execmy2=odbc_exec($connectmy, $querymy2);
$my_licznik=odbc_result($execmy2,1);
$reszta_licznika=$my_licznik-$my_licznik_zlw;
if($my_licznik_zlw>0){
$querymy3="SELECT grt_id FROM $tablemy WHERE grt_id NOT BETWEEN '".$id[0]."' AND '".$ms_licznik."'";
$execmy3=odbc_exec($connectmy, $querymy3);
while(odbc_fetch_row($execmy3)){
$my_grt_id_zle=odbc_result($execmy3,1);
echo("$my_grt_id_zle<br>");
$querymy4="DELETE FROM $tablemy WHERE grt_id='".$my_grt_id_zle."'";
odbc_exec($connectmy, $querymy4);
}}
if($reszta_licznika<$ms_licznik){
}
?>[/php]
[php]<?php
set_time_limit(0);
$hostms="localhost";
$hostmy="sklep";
$userms="sa";
$usermy="root";
$passms="";
$passmy="czarownik";
$tablems="sl_GrupaTw";
$tablemy="sl_grupatw";
$valuesms="grt_Id,grt_Nazwa";
$valuesmy="grt_id,grt_nazwa";
/* $connectmy=odbc_pconnect($hostmy, $usermy, $passmy);
$querymy="CREATE TABLE $tablemy (grt_Id INT NOT NULL, grt_Nazwa VARCHAR(30) NOT NULL)";
$execmy=odbc_exec($connectmy, $querymy); */
$connectms=odbc_pconnect($hostms, $userms, $passms);
$queryms1="SELECT COUNT(*) FROM $tablems";
$queryms2="SELECT $valuesms FROM $tablems";
$execms1=odbc_exec($connectms, $queryms1);
$execms2=odbc_exec($connectms, $queryms2);
$ms_licznik=odbc_result($execms1,1);
$i1="0";
while(odbc_fetch_row($execms2)){
$id[$i1]=odbc_result($execms2,1);
$nazwa[$i1]=odbc_result($execms2,2);
$i1++;
}
$wart_tab_id="'$id[0]'";
for($l1=1;$l1<$ms_licznik;$l1++){
$wart_tab_id.=", '$id[$l1]'";
}
$wart_tab_nazwa="'$nazwa[0]'";
for($l2=1;$l2<$ms_licznik;$l2++){
$wart_tab_nazwa.=", '$nazwa[$l2]'";
}
$wart_ms_id=array($wart_tab_id);
$wart_ms_nazwa=array($wart_tab_nazwa);
echo("$wart_tab_id<br>$wart_tab_nazwa<br>");
$connectmy=odbc_pconnect($hostmy, $usermy, $passmy);
$querymy1="SELECT COUNT(*) FROM $tablemy WHERE grt_id NOT BETWEEN '".$id[0]."' AND '".$ms_licznik."'";
$execmy1=odbc_exec($connectmy, $querymy1);
$my_licznik_zlw=odbc_result($execmy1,1);
$querymy2="SELECT COUNT(*) FROM $tablemy";
$execmy2=odbc_exec($connectmy, $querymy2);
$my_licznik=odbc_result($execmy2,1);
$reszta_licznika=$my_licznik-$my_licznik_zlw;
if($my_licznik_zlw>0){
$querymy3="SELECT grt_id FROM $tablemy WHERE grt_id NOT BETWEEN '".$id[0]."' AND '".$ms_licznik."'";
$execmy3=odbc_exec($connectmy, $querymy3);
while(odbc_fetch_row($execmy3)){
$my_grt_id_zle=odbc_result($execmy3,1);
echo("$my_grt_id_zle<br>");
$querymy4="DELETE FROM $tablemy WHERE grt_id='".$my_grt_id_zle."'";
odbc_exec($connectmy, $querymy4);
}}
if($reszta_licznika<$ms_licznik){
}
?>[/php]
