![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 170 Pomógł: 14 Dołączył: 16.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Potrzebuje przypisać do każdego newsa jakiś tag np. kraj, php, czerwony etc. Zrobiłem tabele dla newsów, nazwy tagów i połączenia news<->tag Kod News: news_id - id newsa news_text - jakiś tekst inne rzeczy Tag: tag_id - id konkretnego tagu tag_name - nazwa tagu Polaczenie: tag_id - id tagu news_id - id newsa Aby pobrać tagi dla jednego newsa (wraz ze wszystkimi informacjami w newsie news_text, news_date) używam 2 zapytań. 1 - do pobrania informacji o newsie 2 - aby przypisać tagi. Jednak jak ułożyć zapytanie / zoptymalizować to wszystko przy wyświetlaniu 50newsów ? Bo wykonanie 101 zapytań dla takiego czegoś to przesada... Pozdrawiam. Ten post edytował Eagle 1.02.2009, 03:29:37 |
|
|
![]()
Post
#2
|
|
![]() Newsman Grupa: Moderatorzy Postów: 4 005 Pomógł: 548 Dołączył: 7.04.2008 Skąd: Trzebinia/Kraków ![]() |
coś takiego? jeśli by nie chciało chodzić dodaj aliasy dla kolumn które mają tę samą nazwę w dwóch tabelach. -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 170 Pomógł: 14 Dołączył: 16.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Nie, nie o takie coś mi chodziło
![]() To zwraca wszystkie dane newsa tyle razy ile ma przypisanych tagów. Jeżeli chce wyświetlić konkretnego newsa to wykonuje do niego zapytanie
Do tej tablicy która się utworzy z pól z bazy wstawiam dodatkową z tagami:
I w ten sposób mam wszystko czego potrzebuje ![]() Jednak gdy wyświetlam ostatnie newsy (np. 50) to zamiast jednego zapytania muszę wykonać ich aż 100 (dla każdego newsa 2 zapytania). I szukam jakiegoś lepszego rozwiązania tego problemu ![]() Myślałem o dodatkowej tabeli `news_temp` gdzie bym przechowywał ID newsa oraz tablicę tagów. Jednak to się zbyt szybko rozrośnie Edit: Szukając natrafiłem na funkcję (MySQLa) concat_ws Jednak nie mam pomysłu jak utworzyć zapytanie aby połączyło wszystkie wyniki w zapytaniu. Edit2: Znalazłem! ![]()
Zapytanie zwróci dodatkowe pole `tags` w którym będą podane taki odseparowanie od siebie ';' Np: Kod news_id | news_text | tags 1 | text | świat;pogoda Nazwy tabeli i pól mogą troszkę się nie zgadzać ale mam nadzieje że się połapią osoby potrzebujące ![]() Dobranoc Ten post edytował Eagle 1.02.2009, 03:28:48 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 08:47 |