Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [mysql] rozbudowane zapytanie
Jawor
post
Post #1





Grupa: Zarejestrowani
Postów: 73
Pomógł: 2
Dołączył: 1.10.2003

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


Witam

Mam dwie tabele:

1. wiadomosci
IdWiadomosci, IdKategorii, IdUzytkownika, Tytul

2. kategorie
IdKategorii, IdKategoriGlownej, Nazwa

Tabela wiadomosci bedzie zawierac dosyc duzo rekordow (okolo 1000 dla kazdego uzytkownika).
Tabela kategorie bedzie ich miala okolo 100.

Mam pytanie czy wykonalne jest stworzenie takiego zapytania, a jezeli tak to czy to bedzie wydajne.

Pobrac cala zawartosc z tabeli wiadomosci gdzie IdUzytkownika rowna sie przykladowemu n, jednoczesnie pobrac z tabeli kategorie nazwe danej kategorii (wiadomosci.IdKategorii), a do tego jezeli pobrana kategoria nie bedzie kategoria glowna (IdKategoriGlownej > 0) to pobrac nazwe kategorii glownej.

Myslalem zeby to zrobic tak ze osobno bede pobieral wszystkie nazwy kategorii, wrzucal do tablicy i z niej podmienial id na nazwy - obawiam sie jednak ze kazdorazowe pobieranie wszystkich kategorii nie bedzie za bardzo wydajne.

Bede wdzieczny za kazda podpowiedz jak to wykonac.
Go to the top of the page
+Quote Post
ayeo
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

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


Zrób LEFT JOINA i pobieraj od razu kategorię główną.
Możesz się bawić z HAVING i IFami, CASE'ami ale po co? Kategorię główną pobieraz zawsze i tyle...
Pozdrawiam!


--------------------
Go to the top of the page
+Quote Post
Jawor
post
Post #3





Grupa: Zarejestrowani
Postów: 73
Pomógł: 2
Dołączył: 1.10.2003

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


No ok, pobieram LEFT JOIN'em nazwe kategorii, i id kategorii glownej - ale jak mam pobrac nazwe tej glownej kategorii ?

Teraz mam zapytanie:

  1. SELECT wiadomosci.IdWiadomosci AS wiadomosci_IdWiadomosci, wiadomosci.IdKategorii AS wiadomosci_IdKategorii, wiadomosci.Tytul AS wiadomosci_Tytul, kategorie.IdKategorii AS kategorie_IdKategorii, kategorie.IdKategoriGlownej AS kategorie_IdKategoriiGlownej, kategorie.Nazwa AS kategorie_Nazwa
  2. FROM wiadomosci LEFT JOIN kategorie ON wiadomosci.IdKategorii = kategorie.IdKategorii
  3. WHERE wiadomosci.IdUzytkownika = '$jakiesid'


Tylko teraz nie wiem jak dolaczyc jeszcze kategorie (jej nazwe) o IdKategorii rownym IdKategoriiGlownej (z tej juz pobranej kategorii) ?
Drugi raz uzyc LEFT JOINA ?

UPDATE:
Dalem drugiego LEFT JOINA rowniez z dolaczeniem tabeli kategorii no i jak narazie to dziala.
Ale czy to jest najlepsze rozwiazanie ?
Jezeli da sie to zrobic jakos lepiej/szybciej bede wdzieczny za propozycje.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 15:53