Nakreślę wątek na moim przykładzie.
1. Mam dane 5 firm z miesięcznymi raportami i robię do każdej zapytanie sumujące w każdej z nich z osobna ostatni zamknięty miesiąc - 5 zapytań, oraz 1 zapytanie które sumuje i wyrzuca na stronę wszystkie firmy razem. Następnie robię 1 zapytanie które wyświetla mi wszystkie firmy i raporty z nich w danym miesiącu wg listingu kolejności dodania i wyświetla je na stronie. Tak więc 7 zpaytań, a drugie 7 zapytań robię z datą jeszcze niezakończonego miesiąca-teraźniejszego który wyświetla dane jako prognoza. Co by było gdybym chciał pobrać dane z całego roku i podzielić je na wyświetlanie każdego miesiąca z każdej firmy i porównywać je na wykresie np słupkowym, albo miesiąc do miesiąca, masakra zapytań?
2. Postanowiłem redukować zapytania i jeden watek teoretycznie chyba rozwiązałem, czyli pobieranie danych z każdej z firm na dany miesiąc - robię foreach'a, bądź "do while" i w WHERE daję zmienną która w pętli przeleci mi wszystkie firmy po np ID, więc tutaj jednym zapytaniem załatwiam kilka zapytań z 5 na 1. Poprawnie?
//zamiast kilku takich wpisów $firma_1 = "SELECT COUNT(id_raportu) AS ilosc_raportow, SUM(kapital) AS suma_kapital, SUM(zysk) AS suma_zysk, SUM(sprzedaz) AS suma_sprzedaz, SUM(skup) AS suma_skup FROM raporty WHERE data_raportu = '$data_bilansu' AND id_spolki=1"; // i wcześniej poniżej były kolejne wpisy z id_spolki 2,3,4,5...n //chciałbym zrobić tak //pobieram liczbę firm $query_il_firm = "SELECT COUNT(id_firmy) AS ilosc_firm FROM firmy"; //sprawdzam zapytanie i tworzę zmienną z sumą ilości firm $row = mysqli_fetch_array($result); $ilosc_firm= $row['ilosc_firm']; //robię do while do { $raporty_firm = "SELECT COUNT(id_raportu) AS ilosc_raportow, SUM(kapital) AS suma_kapital, SUM(zysk) AS suma_zysk, SUM(sprzedaz) AS suma_sprzedaz, SUM(skup) AS suma_skup FROM raporty WHERE data_raportu = '$data_bilansu' AND id_spolki='$i'"; } while($i < $ilosc_firm);
Czy jest to poprawne myślenie i dobra forma? Pisane z palce nie testowane. Najpierw wole zapytać czy tak się robi ku gwoli dobrych praktyk programowania i czy to nie spowalnia storny np gdy będzie powyżej jakiejś ilości firm/raportów?
Bo pierwsze pytanie nasuwa mi się odnośnie tego, że trzeba będzie coś zrobić z nazewnictwem zapytania $raporty_firm, bo zmienna ta będzie posiadała załadowane już kilka firm, a wcześniej miałem $query_firma_1, 2, 3 itd i tak wyrzucałem to na stronie - strukturalnie najpierw jedna firmę, później drugą itd. Jak teraz mam zrobić aby jedna zmienna wyrzuciła mi wszystkie firmy w listingu?