[php][sql] zlozone zapytanie

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
Zbłąkany
Nowy
Nowy
Posty: 22
Rejestracja: pt mar 26, 2004 1:49 pm

[php][sql] zlozone zapytanie

Post autor: Zbłąkany »

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
Zbłąkany
Nowy
Nowy
Posty: 22
Rejestracja: pt mar 26, 2004 1:49 pm

Re: [php][sql] zlozone zapytanie

Post autor: Zbłąkany »

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]
ODPOWIEDZ