![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 1.10.2002 Skąd: Sieradz Ostrzeżenie: (0%) ![]() ![]() |
Witam ponownie,
Tym razem zapytanie moje brzmi: Czy to mozliwe, ze mysql nie realizuje zapytania do bazy ze wzgledu na duuuza liczbe rekordow w tabeli? Mam 3 tabele: - odbiorcy: numer odbiorcy, jego dane, miejsce rejestracji (0 - filia "1", 1 - filia "2"); - faktury: numer faktury, odbiorca, miejsce wystawienia f-ry (0 lub 1, jak wyzej); - dokumenty: wszystkie pozycje dokumentow, takze faktur, powiazane numerem odbiorcy i faktury. rowniez zawieraja dane dot. miejsca wystawienia dokumentu. Miejsce wystawienia dokumentu jest tu szczegolnie wazne. Numery dokumentow bowiem moga sie powtarzac, poniewaz w filii 1 i w filii 2 konkretnej firmy numeracja jest niezalezna. Sa wiec dwie faktury o numerze 1/03 i tak dalej. Wyroznikiem jest wiec wtedy miejsce wystawienia. Skrypt ma za zadanie syntetyczne podsumowanie faktur. Kod wyliczający odbiorców spełniających kryterium KODODB (region) działa bez zarzutu i wygląda tak. [php:1:b393cb301e] $odbiorcy_spis=mysql_query("SELECT * FROM odbiorcy WHERE KODODB='$kod' ORDER BY MIASTO ASC "); while ($odbiorca=mysql_fetch_array($odbiorcy_spis)) { [/php:1:b393cb301e] Następnie dla każdego odbiorcy skrypt wylicza faktury, ktore zawieraja dany numer odbiorcy ($odbiorca[0]) i jego miejsce rejestracji PLACE ($odbiorca[26] = 0 lub 1). [php:1:b393cb301e] $spis_faktur=mysql_query("SELECT * FROM faktury WHERE ID_O='$odbiorca[0]' AND PLACE='$odbiorca[26]' "); while ($faktura=mysql_fetch_array($spis_faktur)) { [/php:1:b393cb301e] Teraz skrypt powinien wyliczyć dla każdej faktury pozycje dokumentu, zawarte w tabeli dokument. Wiązanie odbywa się na podstawie typu dokumentu faktury (V - faktura Vat, K - korekta), numeru "wuzetki" (dokumentu magazynowego, ktory zawarty jest zarowno w tabeli faktury jak i w tabeli dokument przy kazdej pozycji), oraz miejsca jej wystawienia. [php:1:b393cb301e] $rodzaj_faktury="$faktura[5]"; $nr_wz="$faktura[6]"; $miejsce_sprzedazy=$faktura[48]; $pozycje_z_faktury=mysql_query("SELECT * FROM dokument WHERE FAK='$rodzaj_faktury' AND PLACE='$miejsce_sprzedazy' AND NR_DOK='$nr_wz') "); while ($pozycja=mysql_fetch_array($pozycje_z_faktury)) { # RESZTA KODU WYŚWIETLAJĄCA POZYCJE DOKUMENTU ITP. [/php:1:b393cb301e] Problem tkwi w tym, iz skrypt w ogole nie interesuje sie zapytaniem $pozycje_z_faktury. Nawet gdy zmienie nazwe tabeli dokument na na przykład "dupa" to nawet nie wyswietli komunikatu, ze "Supplied argument is not a valid MySQL result resource "... Co zrobić? Jestem w potrzasku.... Czy może to wynikać z dużej ilości rekordów w tabeli dokument (prawie 200.000 )? Nie sądze, aczkolwiek... kto wie... Będę bardzo wdzięczny za pomoc! Pozdrawiam, Michał S. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 384 Pomógł: 0 Dołączył: 3.04.2003 Skąd: Chorzow Ostrzeżenie: (0%) ![]() ![]() |
Jestes pewien ze ta druga petla w ogole sie wykonuje ?
Bardzo nie zalecam Ci stosowania konstrukcji SELECT * FROM w polaczeniu z $wiersz_z_tabeli[numer_kolumny] - prowadzi to od razu do rozjadu pomiedzy tym co chesz uzyskac, a tym co uzyskujesz. MySQL _NIE_ gwarantuje kolejnosci zwracania kolumn. Uzywaj nazw kolumn. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 06:07 |