![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 304 Pomógł: 0 Dołączył: 12.12.2006 Skąd: Pszów Ostrzeżenie: (0%) ![]() ![]() |
witam
mam 2 tabele:
Druga tabela zawiera id,nazwa. Potrzebuje zrobic zapytanie która do 1 tabeli doda id,typ,id_gracz,czas (te dane są z poziomu php generowane) a na dodatek dodaj w pozostałe 10 pól wynik podzapytania:
Próbowałem to zrobić tak:
ale nie działa Macie jakieś sugestie? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Najwyżej ograniczy się i/lub wywali kolumnę nr_slotu jeśli nie jest konieczna i wsio. W takim wypadku powiedz mi co będzie nadmiarowe... 10 slotów z czego 8 puste, czy jedynie 2 rekordy? Bo dla mnie to pierwsze, czyli trzymanie rekordu w którym 8 pól jest wypełnione pustką. Na dodatek architektura jest nie skalowalna, a jakakolwiek ingerencja polegająca na zmniejszeniu lub zwiększeniu schowka wymusza konieczność zmiany liczby kolumn w tej tabeli. O ile jeszcze zwiększanie to nie problem, to zmniejszyć nie można sobie ot, tak, bo mógłbyś użytkownikom coś skasować w usuwanych kolumnach. A tak możesz robić to bez obaw z dodatkowym info: "Skrzynka pęka w szwach i niedługo się rozsypie. Zmniejsz liczbę przedmiotów w niej." i gdy doszła by do określonej wielkości zniknąłby napis ale już niemożliwe byłoby przekroczenie wielkości maksymalnej. Poza tym wyobraź sobie choćby schowek wielkości 70-100 pól. Tabela z 104 kolumnami? Niby wszystko int i powinno być szybkie, ale dużo pól, z czego, przynajmniej początkowo, większość niewykorzystana. Do tego co dochodzi jeszcze? Sprawdzanie które pola są, a które nie są puste. Będziesz leciał pętlą po wszystkich komórkach rekordu by sprawdzać gdzie są 0 a gdzie nie? A może dodatkowy algorytm, który przesuwałby przedmioty z dalszych pozycji ku początkowi, by usuwać owe luki? Jak widzisz, rozwiązanie może jest i fajne na pierwszy rzut oka, ale w przyszłości tylko sprawi więcej problemów. Może i fajnie wygląda teraz, ale gorzej z oprogramowaniem jego działania. Przemyśl to na tym etapie, bo jeszcze zapewne nie implementujesz rozwiązań na sztywno i możesz pozwolić na zmiany w projekcie większe także. Oszczędzisz wkurzania się w przyszłości przy zmianach, gdy będziesz musiał za każdym razem zmieniać liczniki w pętlach by dopasować do zmienianych długości i jakieś algorytmy pisać dziwne. Poza tym jeszcze jedno... Jeśli poprogramujesz trochę, to sam zauważysz, że czasem nadmiarowe dane są lepsze niż wymyślać obciążające zapytania, które zajadą bazę. Przykładem jest licznik postów na forum. Myślisz, że za każdym razem forum to liczy userowi? Byś bazę zarżnął wywołując kilkanaście countów w chwili obciążenia serwisu setkami lub tysiącami userów (IMG:style_emoticons/default/winksmiley.jpg) Od tego jest dodatkowe pole w rekordzie danych usera, które tę daną statystyczną przechowuje.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.09.2025 - 15:20 |