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
zegarek84
post
Post #2





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


Cytat(prowseed @ 8.03.2012, 03:52:06 ) *
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ć?

Przecież i tak musisz pobrać wszystkie wiersze, więc to zrób jednak nie wczytuj do tablicy!!! a od razu wyświetlaj dane w widoku...
SELECT * FROM tabela ORDER BY kategoria
potem dane otrzymane wyciągaj wiersz po wierszu a nie do tablicy
i dalej sprawdzasz czy jest ta sama kategoria co w zmiennej, jeśli tak to dodajesz przecinek i następny wpis, jeśli inna kategoria to korzystasz z funkcji do wyświetlania kategorii i dodajesz świeży wpis... oczywiście piszę o funkcjach widoku - nie buforuj danych nie potrzebnie ;]

Ten post edytował zegarek84 8.03.2012, 23:12:58
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: 16.10.2025 - 00:33