![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 13.09.2014 Ostrzeżenie: (0%) ![]() ![]() |
Witam. MySQL to nie jest moja najlepsza strona, a potrzebuje połączyć w pewien sposób 3 tabele.
Otóż posiadam w bazie tabele: - news ('news_id', 'news_title', 'news_content',...); - tags('tag_id', 'tag_name'); - tag_links('tag_id', 'element_id', 'element_category') Potrzebuję zapytania do tworzonej przeze mnie wyszukiwarki na stronie, które "wyciągnie" mi news_id po znalezieniu pewnej frazy w 'news_content', 'news_title' oraz 'tag_name' powiązanego 'tag_id'. Dla wyjaśnienia 'element_id' określa 'news_id' a 'element_category' określa fakt, że jest to news (gdy ma wartość 0). Z wyciągnieciem z 'news_content' i 'news_title' nie miałem problemu, gorzej z tymi tagami. Oto moje aktualne zapytanie.
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Poprostu dołączasz kolejne tabele, z ktorych chcesz wyciągnąć dane. Robisz to przypomocy np. LEFT JOIN - patrz dokumentacja mysql
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 13.09.2014 Ostrzeżenie: (0%) ![]() ![]() |
Dobra, to już sobie ogarnałem troche, ale mam trochę inny problem przy tej samej bazie. Otóż jak mam stworzyć polecenie, które wyszuka mi newsa z przynajmniej jednym takim samym tagiem, pomijając tego, który jest wyświetlany.
Mam gotowe polecenie wyświetlające newsy z jednym powtarzajacym się tagiem, ale gdy dochodzi drugi, trzeci itd. to nie wiem co zrobic:
Uprzedzając pytania, tak słyszałem o OR, ale problem w tym, że nie zawsze wiadomo ile będzie tych tagów. Mam nadzieję, że zrozumiale napisałem to pytanie ![]() |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 111 Pomógł: 16 Dołączył: 20.02.2014 Ostrzeżenie: (10%) ![]() ![]() |
nigdy nie wiadomo ale jakieś maks. musisz założyć, nigdy nie widziałem by wątek na forum miał więcej niż kilka tagów.
Możesz zrobić z tym OR - do jakiejś zmiennej z pętlą przypisz te wszystkie warunki z OR i po prostu wstawiaj tą zmienną w zapytanie lub zrób pętle i w jej środek daj pobieranie z bazy - jeden tag - 1 zapytanie Ten post edytował adrianpl20 18.09.2014, 18:51:14 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 13.09.2014 Ostrzeżenie: (0%) ![]() ![]() |
Też mi przyszedł do głowy taki pomysł, ale myślałem że da się to z poziomu samego MySqla załatwić. Chyba skorzystam z tego pierwszego sposobu, drugi wydaje mi się że ma taką wadę, że może wyświetlic mi kilka razy ten sam news. Dzięki za pomoc
![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 3.07.2025 - 06:48 |