Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 3.04.2013 Ostrzeżenie: (0%)
|
Witam!
Ucząc się PHP i baz danych MySQL postanowiłem napisać aplikację zarządzania aktualnościami na stornie. Problem polega na tym, że nie wiem jak uzyskać dane z bazy danych najlepiej w 1 zapytaniu albo w jaki kolwiek sposób. 3 tabele relacja wiele do wielu, (kazdy article moze miec kilka kategori, każda kategoria może mieć kilka article). Nie wiem jak wyświetlić liste newsów (article) oraz kategorie do których należą bez powtarzania w liście tego samego Newsa z tym samym id np w takiej formie 1. artykul 1, kategoria: kat_A, kat_B 2. artykul 2, kategoria: kat_A Schemat bazy
Metoda odpowiedzialna za pobieranie danych z MySQL - nie wiem jak sformuować zapytanie do mySQL
oraz plik template odpowiedzialny za wyświetlenie listy:
Obecnie wynik wyglada nastepująco: 1 Tytuł: test kategoria: robocza Autor: Administrator Data: 2013-04-01 EDYTUJ 2 Tytuł: teswt 2 kategoria: testowa,robocza Autor: Administrator Data: 2013-04-01 EDYTUJ 3 Tytuł: teswt 2 kategoria: testowa,robocza Autor: Administrator Data: 2013-04-01 EDYTUJ jak widać pozycja nr 2,3 jest to ten sam artykul... Z góry dziękuję za odpowiedz, pozdrawiam. Witam. Udało mi się samemu rozwiązać mój problem, nawet na 2 sposoby. Chce żebyście powiedzieli mi. który jest lepszy (poprawny) bo oba działają. 1 sposób
2 sposób
Nie wiem po prostu kiedy użyć JOIN LEFT a kiedy je pominąć jak w 1 sposobie. Definicję JOIN (LEFT RIGHT) oczywiście znam ale jescze nie potrafię wykorzystać tego w praktyce. Pozdrawiam, rthwh Ten post edytował rthwh 3.04.2013, 11:50:35 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 295 Pomógł: 7 Dołączył: 26.03.2004 Skąd: Opole Ostrzeżenie: (0%)
|
W mysql istnieje szybsza i czytelniejsza składnia definiowania JOIN'ów - z uzyciem słowa "using" - można je stostować jesli obie tabele łączysz jednym kluczem o tej samej nazwie.
Zamiast:
może być:
Pozdrawiam (IMG:style_emoticons/default/wink.gif) Twój drugi sposób z joinem jest lepszy, bo przy łączeniu wiekszej liczby tabel łatwiej sie połapać. Left join używasz kiedy chcesz żeby zapytanie zwróciło również artykuły bez przypisanej kategorii (zamiast kategorii zwróci null). Jeśli z góry wiesz, że każdemu artykułowi musi być przypisana kategoria to uzyjesz INNER JOIN. Trzeci sposób to wykorzystanie podzapytania. Ale z tego co wiem joiny działają szybciej. |
|
|
|
rthwh MySQL Relacje - jak sformułować zapytanie? 4.04.2013, 19:43:58
rthwh Okej wszystko już działa dzięki za odpowiedz.
Ter... 14.04.2013, 20:14:37 ![]() ![]() |
|
Aktualny czas: 28.12.2025 - 02:49 |