Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Funkcja zwracająca maxymalną wartość
Forum PHP.pl > Forum > Bazy danych > Oracle
Foxik
Proszę i pomoc. Mam dwie tablice w Oracle, w których są pola z identyfikatorem zwiększającym się o 1 za kazym wpisem nowej pozycji. Chodzi o to aby pobierać jednocześnie maxymalną wartość z tych dwóch tablic, wybierać maxymalną wartość i zwiększać ją o jeden. Chciałabym aby te pola były unikatowe. A oto jak napisałam funkcję, którą nie wiem jak dokończyć:
[php:1:9306e7b584]<?php
function GetIdDK()
{
$NextIdKD = 0;

$connection = OCILogon ("bis", "bis", "zzz");
if ($connection == false)
{
echo OCIError($connection)."<BR>";
exit;
}

$query = "SELECT max(ID) FROM zz_kom";

$cursor = OCIParse ($connection, $query);
if ($cursor == false)
{
echo OCIError($cursor)."<BR>";
exit;
}

$result = OCIExecute ($cursor);
if ($result == false)
{
echo OCIError($cursor)."<BR>";
exit;
}
if (OCIFetchInto ($cursor, $values))
{
$NextIdKom = $values[0];
}


$query = "SELECT max(ID) FROM zz_dru";

$cursor = OCIParse ($connection, $query);
if ($cursor == false)
{
echo OCIError($cursor)."<BR>";
exit;
}

$result = OCIExecute ($cursor);
if ($result == false)
{
echo OCIError($cursor)."<BR>";
exit;
}

if (OCIFetchInto ($cursor, $values))
{
$NextIdDru = $values[0];
}
// teraz mam 2 dane z dwóch tabel jak wybrać tą maksymalną, aby powiększyć ją o jeden?
tu chyba musi być pętla while
OCILogoff ($connection);

return $NextIdKD;
}

?>[/php:1:9306e7b584]
bardzo proszę o pomoc, będę bardzo wdzięczna
Seth
Nie wiem czy dorze zrozumialem Cie, wiec czy chodzi Ci o to aby stworzyc pola z automatycznym inkrementowaniem wartosci w obu tabelach ?
Czy o to aby jak juz maz te pola pobrac z nich aktualne maksymalne wartosci i wrzucic je do innej zmiennej/pola w tabeli ?
Foxik
już odpowiadam, chodzi o pobranie już maksymalnych wartości z dwóch tabel, wybranie z nich ponownie maksymalnej i zainkrementowanie jej. Zmienną jaką otrzymam będę wpisywać do jednej z tych tabel w zależności co będę wprowadzać. Czy zamieszałam, czy coś się wyjaśniło?
menic
Możesz np. posortować tablice. Wartości ułozą ci ssie rosnąco lub malejąca i pobrac max jako [php:1:2174947e07]<?php
$var = end($tablica)
?>[/php:1:2174947e07]
Seth
Nie mam w tej chwili oracla aby to przetestowac ale sprawdz takie zaptanie:
[sql:1:bd97d16a2c]SELECT GREATEST(query1.max1, query2.max2) FROM
(SELECT MAX(pole1) as max1 FROM tabela1) query1,
(SELECT MAX(pole2) as max2 FROM tabela2) query2[/sql:1:bd97d16a2c]
Dzieki nie mu nie bedziesz musial pisac zadnych funckji w PHPie tylko odrazu uzyskasz najwieksza wartosc z dwoch najwiekszych smile.gif
Oczywyscie pole1, pole2, tabela1 i tabela2 sa do zmiany na odpowiednie wartosci winksmiley.jpg

Edit:
Wzasadzie to odrazu mozesz wrzucic ta wartosc do tabeli dajac INSERTa i nie musisz wsylac kolejnej kwerendy.
Foxik
Bardzo dziękuję za podpowiedź, zadziałało. biggrin.gif
Seth
php Poczatkujacy >> Bazy Danych
(Temat wyedytowany)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.