Funkcja zwracająca maxymalną wartość, z dwóch tablic |
Funkcja zwracająca maxymalną wartość, z dwóch tablic |
14.01.2004, 15:30:55
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 11.01.2004 Ostrzeżenie: (0%) |
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 |
|
|
14.01.2004, 15:35:43
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 2 335 Pomógł: 6 Dołączył: 7.03.2002 Ostrzeżenie: (0%) |
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 ? |
|
|
14.01.2004, 15:40:12
Post
#3
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 11.01.2004 Ostrzeżenie: (0%) |
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?
|
|
|
14.01.2004, 15:51:11
Post
#4
|
|
Grupa: Zarejestrowani Postów: 493 Pomógł: 0 Dołączył: 14.06.2003 Skąd: Tomaszów Lubelski/Rzeszów Ostrzeżenie: (0%) |
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] -------------------- |
|
|
14.01.2004, 15:58:54
Post
#5
|
|
Grupa: Przyjaciele php.pl Postów: 2 335 Pomógł: 6 Dołączył: 7.03.2002 Ostrzeżenie: (0%) |
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 Oczywyscie pole1, pole2, tabela1 i tabela2 sa do zmiany na odpowiednie wartosci Edit: Wzasadzie to odrazu mozesz wrzucic ta wartosc do tabeli dajac INSERTa i nie musisz wsylac kolejnej kwerendy. |
|
|
14.01.2004, 16:19:50
Post
#6
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 11.01.2004 Ostrzeżenie: (0%) |
Bardzo dziękuję za podpowiedź, zadziałało.
|
|
|
14.01.2004, 17:57:38
Post
#7
|
|
Grupa: Przyjaciele php.pl Postów: 2 335 Pomógł: 6 Dołączył: 7.03.2002 Ostrzeżenie: (0%) |
php Poczatkujacy >> Bazy Danych
(Temat wyedytowany) |
|
|
Wersja Lo-Fi | Aktualny czas: 18.04.2024 - 03:35 |