Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Losowy rekord
Forum PHP.pl > Forum > Przedszkole
pytajacy
Witam mam bazę danych gdzie mam 3 tabele :
nazwa , typ , los
2 pierwsze są logiczne lecz to tabeli los chciałbym wrzucić kilka zestawów danych głownie chodzi mi o id z innych kolumn
nie jestem pewny też jak by ta tabela powinna wyglądać.
przykładowe uzupełnienie :
Nazwa | 1 | 7,5,1,3; 1;6,5;9,6,15;5
, rozdziela id które wchodzi w skład zestawu
; rozdziela zestawy
nie jestem pewny czy tak się da.
b4rt3kk
Da się.
pytajacy
Fakt nie zadałem pytania. Jak to zrobić ?
b4rt3kk
Cytat(pytajacy @ 21.06.2013, 13:16:24 ) *
Fakt nie zadałem pytania. Jak to zrobić ?


Kwestia jeszcze tego jak chcesz to zrobić? Jednym zapytaniem sql czy jakąś funkcją w php?
pytajacy
dla mnie w tej chwili bez różnicy ale załóżmy takie rozwiązanie które teoretycznie mniej serwer obciąży. Załóżmy też że nie będzie więcej niż 6 id w jednym zestawie i nigdy nie będzie więcej niż 15 zestawów za tor rekordów będą tysiące i będą często używane
b4rt3kk
Przychodzi mi na myśl takie rozwiązanie:

  1. $query = "SELECT id FROM tabela ORDER BY RAND() LIMIT 24";
  2. // przetworzenie zapytania
  3. // zrób tak by otrzymać tablicę z wartościami ID
  4. // złącz wedle uznania tablicę do jednego ciągu rozdzielonego tak jak mówisz
  5. $query = "INSERT INTO los VALUES ('', '', '$string')";
pytajacy
nie o to mi chodzi. teraz czytam to jeszcze raz i widzę że nie wyraziłem się jasno.
Chcę mieć taką tabelę o nazwie "Pola"
w niej takie kolumny jak
Id |Nazwa | typ | los

to jest ten błąd który teraz zauważyłem. chciałbym do jednego rekordu w kolumnie "los" dać kilka zestawów danych( tablic zmiennych. nie wiem jak to rozwiązać właśnie) Chciałbym pobierać jedną kolumnę i mieć te zestawy wszystkie lub jeden losowy odrazu po pobraniu. Dokładniejszy przykład :
1 | Jakaś nazwa | 100 |
1,5,6,9,5,2 - Pojedynczy zestaw danych
6,9,7,6,0,0
11,69,75,1,1,0
2,2,2,2,2,2,2

te numerki to by były id z innych tabel wszystko wpisywane ręcznie.

to będą dane stałe, które raz wprowadzone nigdy nie ulegną zmianie lecz będą często wykorzystywane więc muszę postawić na maksymalną wydajność.
Ja widzę 2 opcję rozwiązania tego problemu, lecz wiem że nie są one zbyt dobre a wręcz tragiczne
jedna to zapisać wszystko do pliku i korzystać z pliku, lecz przy tysiącach tych rekordów otwieranych przez jednego użytkownika 200-300 razy dziennie i przy kilkuset użytkownikach mocno obciąży serwer.
drugą opcją będzie stworzenie sporej liczby tabel gdzie wrzucę w jakiś sposób te kilka id i będę w pliku losował który nr tabeli ma pobrać - myśle że to 2 nie jest bardzo tragicznym rozwiązaniem, choć pewnie spowoduje dość duży rozrost bazy danych


To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.