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.