Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak optymalnie zaprojektować zapytania?
prowseed
post
Post #1





Grupa: Zarejestrowani
Postów: 433
Pomógł: 64
Dołączył: 29.01.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Witam,
Jest 3:42... Co ja chcę napisać... Zacznę od tego jak wyglądają wpisy w bazie
Kod
[ id | kategoria | treść ]


Wpisów jest już sporo więc mam ograniczone możliwości zamodelowania tego w jakiś inny sposób. Nie bardzo wiem natomiast w jaki sposób stworzyć optymalne zapytania do bazy danych. A co chcę osiągnąć? Kategoria, to jedna litera. Najpiękniej by było, gdyby zapytanie zwróciło całą kolumnę i skrypt sprawdzał jakie literki występują i tworzył na tej podstawie grupy w widoku. I teraz dla każdej grupy kategorii przyporządkował odpowiednie jej treści, czyli baza może wyglądać tak:
Kod
[1 | A | wpis1 ]
[2 | A | wpis2 ]
[3 | A | wpis3 ]
[4 | B | wpis4 ]
[5 | A | wpis5 ]
[6 | D | wpis6 ]
[7 | G | wpis7 ]
[8 | G | wpis8 ]


I teraz co chcę osiągnąć w wyniku zapytania:
Kod
A -> wpis1, wpis2, wpis3, wpis5
B -> wpis4
D -> wpis6
G -> wpis7, wpis8


inne litery się nie wyświetlają, natomiast gdy zostanie dodany wpis
Kod
[9 | U | wpis9 ]


to wynik już powinien wyglądać tak:
Kod
A -> wpis1, wpis2, wpis3, wpis5
B -> wpis4
D -> wpis6
G -> wpis7, wpis8
U -> wpis9

Ktoś mi powie jak to mądrze ugryźć? Niby coś tam sobie napisałem, ale to wygląda tak okropnie, że nie mogę na ten kod patrzeć...
Robie tak, że pobieram z bazy wszystko co mam, lecę while'em po wyniku, sprawdzam warunek na inarray dla kategorii, jak jest, to dopisuje 'wpis', jak nie ma, to tworze w tablicy kategorie i dodaje wpis. No, potem jakieś wyświetlanie... Da się to jakoś bardziej SQL'owo zrobić?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
prowseed
post
Post #2





Grupa: Zarejestrowani
Postów: 433
Pomógł: 64
Dołączył: 29.01.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Dzięki Sephirus za pomoc, co prawda drugie rozwiazanie jest niezle, martwi mnie natomiast ilosc zapytan. Na razie kategorii jest siedem wiec wszystko dziala w miare sprawnie, natomiast domyslnie ma byc cos kolo 26 : ) Mimo wszystko wydaje sie dzialac szybciej, niestety zapomnialem microtime'em sprawdzic moje rozwiazanie. Na uwadze mam jednak fakt, ze ograniczenia na procesorze sa na serwerze tez i chcialbym zrzucic na baze tyle ile moge. GROUP_CONCAT jest fajne, zaraz tez sprobuje cos skleic pod tym katem.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 6.10.2025 - 03:23