![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 28.01.2013 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Mam problem z odpowiednim wyświetleniem danych ze swojej bazy. Posiadam 3 tabele.
Towar, Wlasnosc, Towar_wl. Tabela towar posiada informacje o towarze oraz jego ID. Wlasnosci to nazwa wlasnosci oraz ID zas towar_wl to tabela normalizujaca gdzie znajduje sie ID towaru, id wlasnosci oraz id wpisu. Zatem tabele są następujące: Towar ID Nazwa Cena Wlasnosc ID Nazwa towar_wl ID ID_towar ID_wlasnosc Osiągnąć chcę tabele w postaci: towar.nazwa | towar.cena | wlasnosc.nazwa | wlasnosc.nazwa | wlasnosc.nazwa | walsnosc.nazwa .... Dany towar zawsze ma max 5 własności (zatem musze zawsze 5 wyświetlić), jednak nie wiem jak poprawnie połączyć te tabele. Najważniejsza jest wydajność (ponieważ w bazie będzie dużo wpisów). Początkowo robiłem to z wykorzystaniem 5 JOIN'ow do tej samej tabeli lub poprzez dodane 5 SELECT'ow (dla każdej własności), jednak wydajność była bardzo słaba. Proszę o pomoc. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Może to Cię nakieruje:
A potem w PHP jak dostaniesz wyniki:
EDIT: Jeśli chciałbyś osiągnąć od razu taką strukturę to wydaje mi się, że zostają Ci jedynie te nieszczęsne wspomniane joiny ![]() Ten post edytował Sephirus 28.01.2013, 09:30:40 -------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 28.01.2013 Ostrzeżenie: (0%) ![]() ![]() |
użycie PHP odpada, ponieważ muszę mieć to zrobione wszystko z poziomu zapytania MySql
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Zapytanie jakie podał ci Sephirus jest jedyne słuszne. Lepiej już tego raczej nie zrobisz.
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
No to pozostaje Ci jedynie jakaś procedura albo te joiny nieszczęsne...
Możesz ewentualnie spróbować (w sensie czysto spróbować - dla zabawy) zamiast joinów dać podzapytania dla każdej z własności ale to nie powinno być wydajniejsze... -------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 34 Dołączył: 22.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 340 Pomógł: 49 Dołączył: 3.07.2009 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
Mogę się dowiedzieć czemu joiny mają być nieszczęsne??
Spadek wydajności świadczy o problemach z indexami. Przy właściwych indexach złączenia nie obniżają wydajności Ten post edytował bpskiba 28.01.2013, 18:59:00 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 12:04 |