Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> JOIN parametryczny, słowa kluczowe + 5 typów zawartości
WebCM
post
Post #1





Grupa: Zarejestrowani
Postów: 375
Pomógł: 20
Dołączył: 28.07.2006

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


Dodaję obsługę słów kluczowych. Z mapą/listą tagów nie ma problemu, ale schody zaczynają się, gdy chcę wyświetlić elementy, które mają przypisane konkretny tag.
  1. SELECT TYPE,ID FROM tags WHERE tag = 'security'

Uzyskam TYP oraz ID elementów, ale brakuje tytułu, kategorii i ewentualnie opisu. Pewnie powiecie - JOIN załatwi sprawę. Istnieje 5 typów elementów (albo więcej), każdy ma swoją własną tabelę, np. arts, files, news...

Czy da się łączyć tabele wg warunku - na przykład gdy TYPE=1, łączymy z "arts"? W SQLite próbowałem CASE, ale wyskakuje błąd. Nie sprawdzałem w MySQL.

Ewentualnie: jazda 5 zapytań albo zastosuj UNION.

Dodatkowo trzeba sprawdzić, czy element jest włączony oraz czy kategoria, do której należy element, jest włączona (w osobnej tabeli cats, a więc dodatkowy JOIN jest nieunikniony).

Ze względu na tak skomplikowane operacje warto tworzyć CACHE, jednak liczę na sugestie związane z powyższym.

Ten post edytował WebCM 26.02.2010, 22:33:43
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
WebCM
post
Post #2





Grupa: Zarejestrowani
Postów: 375
Pomógł: 20
Dołączył: 28.07.2006

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


Działa, ale na pewno dałoby się napisać zapytanie lepiej:
  1. SELECT
  2. i.ID,i.name
  3. FROM
  4. arts i
  5. INNER JOIN
  6. cats c
  7. ON
  8. i.cat=c.ID
  9. WHERE
  10. i.access=1 AND c.access=1 AND i.ID IN (SELECT ID FROM tags WHERE tag=? AND TYPE=1)
  11.  
  12. UNION ALL
  13.  
  14. SELECT
  15. i.ID,i.name
  16. FROM
  17. files i
  18. INNER JOIN
  19. cats c
  20. ON
  21. i.cat=c.ID
  22. WHERE
  23. i.access=1 AND c.access=1 AND i.ID IN (SELECT ID FROM tags WHERE tag=? AND TYPE=2)
  24.  
  25. ORDER BY i.name

Co należałoby zoptymalizować? Obecnie:
1. Dla każdego typu elementów baza musi pobrać odpowiadające ID elementów
2. JOIN z tabelą cats pewnie też jest kosztowny
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: 4.10.2025 - 06:28