![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 31.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam, mam taki problem:
mam dwie tabele pierwsza np id name datetime_add druga cos_id title cos_datetime_add i teraz chce połączyć obydwie tabele aby wyglądały mniej więcej tak: id name cos_id title datetime_add(połączona z cos_datetime_add) chodzi o to ze pierwsza tabela zawiera komentarze a druga to posty obie są niezależne od siebie, chce je połączyć po to aby móc zrobić order na dacie i wyciągnąć np 20 ostatnich zdarzeń z tych 2 tabel ale nei wiem jak, kombinowałem z join'ami ale mi nie wychodziło, jakieś wskazówki? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
No to skoro Ci nie wychodziło to pokaż CO było źle. Manuala JOIN-a nie będziemy czytać każdemu (który pojawia się z częstotliwością 1 na dzień)
-------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 31.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
jak łącze joinem to mi po "join" zwraca iloczyn kartezjański
ja chce dostać w jednej tabeli posty i komentarze z połączonymi kolumnami z datami dodania ich ... przykładowe zapytania których używałem : SELECT * FROM `forum_posts` join `comments` - zwraca mi iloczyn kartezjanski SELECT * FROM `forum_posts` join `comments` on `forum_posts`.post_datetime_add = `comments`.datetime_add - zwraca pusty wynik - logiczne bo daty z obu tabel są różne... left join zwróci tylko posty z pustymi kolumnami z comments .. nie wiem jak to ugryźć, za dobry z mysqla nie jestem ale wiem gdzie jest manual mysql i definicje podstawową joina raczej znam... |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
JOINY najczęściej robi Się po identyfikatorach a nie po datach. Komentarze przypisany są do posta, który ma pewne ID po którym powinieneś łączyć tabele.
-------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 31.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
no właśnie chodzi o to że komentarze to całkiem oddzielna działka w portalu, nie mająca nic wspólnego z postami... chce połączyć te 2 tabele aby móc zrobić tak jakby podgląd zdarzeń w portalu wg daty... Oczywiście rozwiązaniem jest stworzenie tabeli ze zdarzeniami i przy dodaniu komentarza lub posta lub czegokolwiek innego dodawać wpis do niej, ale to wymaga dopisanie kolejnych funkcji czego chciałem uniknąć... chyba że uda mi się jakoś z triggerami.. no nic, dzięki za pomoc...
![]() |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Join nie służy do łączenia wyników zapytania ale powiązania jednej tabeli z drugą, także źle podchodzisz do tematu.
Dostaniesz listę id elementów, które potem musisz pobrać oddzielnym zapytaniem. Oczywiście staraj się ograniczyć wyniki w podzapytaniach. -------------------- |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 31.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki:) z tym już dalej powalczę, o taki efekt mi właśnie chodziło:)
dodałem do tabel po jednej pustej kolumnie ( col_null ) i przy łączeniu jak chce dane z pierwszej to w drugiej ustawiam col_null - efekt osiągnięty
Ten post edytował janiek_j 14.11.2010, 22:43:39 |
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Dodałeś kolumne null_col? Po co?
Ten post edytował wookieb 15.11.2010, 07:12:32 -------------------- |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 31.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Bo nie wiedziałem, że można tak jak napisałeś..
![]() mam jeszcze pytanie co do wydajności takich konstrukcji, powiedzmy ze zrobię union z 4 selectów z tego zrobie sobie widok i pozniej ten widok będę join'ował do kolejnych 4 tabel i dopiero pobierał wynik 30 ostatnich elementów z powiedzmy 10 tys elementów..... ![]() Ten post edytował janiek_j 15.11.2010, 15:09:02 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 03:33 |