![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 226 Pomógł: 25 Dołączył: 22.05.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
![]() Opis problemu będzie zawiły, ale postaram się to opisać jak najlepiej potrafię. Do rzeczy. Mam tabelę, w której przechowuję zdjęcia do rotatora. Wygląda ona tak: Kod tab_id, tab_event_id, tab_image_big, tab_image_small tab_event_id przechowuje id do wydarzenia. Tutaj zaczynają się schody. Dla przykładu - uproszczona tabela wydarzeń wygląda tak: Kod event_id event_object_id event_object_name event_object_town_id 1. Jeżeli wydarzenie tyczy się obiektu, który jest w bazie, to pole event_object_name i event_object_town_id są niczym (NULL), np.: Kod 0, 213, NULL, NULL W sytuacji takiej jak powyżej identyfikator miasta wyciągam z tabeli obiektów. 2. Jeżeli wydarzenie dotyczy jakiegoś miejsca, którego nie ma w bazie to jest odwrotnie - pole event_object_id staję się nicością (NULL), np.: Kod 0, NULL, 'Łąka obok miasta', 1 Problem polega na tym żeby wyciągnąć wydarzenia z danego miasta niezależnie od tego, czy miejsce wydarzenia przypisane jest do obiektu, które jest w bazie, czy do "Łąki obok miasta". Napisałem zapytanie, które... zwraca to co bym chciał: Kod SELECT * FROM rotator INNER JOIN wydarzenia ON wydarzenia.event_id = rotator.tab_event_id LEFT JOIN obiekty ON obiekty.object_id = wydarzenia.event_object_id WHERE obiekty.object_town_id =1 || wydarzenia.event_town_id =1 Tylko za cholerę nie wiem dlaczego z LEFT JOIN działa poprawnie, a z INNER JOIN już nie. Wiem mniej więcej co robią te polecenia, ale nie mogę tego zrozumieć. Mógłby mi ktoś to wyjaśnić? ![]() |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 279 Pomógł: 60 Dołączył: 25.02.2012 Ostrzeżenie: (0%) ![]() ![]() |
INNER JOIN zwróci wynik złączenia, tylko jeśli odpowiednie wiersze istnieją w obu tabelach (po lewej i po prawej stronie).
W przypadku LEFT JOIN, jeśli nie ma wiersza z prawej strony złączenia, to nadal zwracany jest wynik, ale wszystkie wybrane kolumny odnoszące się do prawej tabeli, mają wartość NULL. |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 226 Pomógł: 25 Dołączył: 22.05.2011 Ostrzeżenie: (0%) ![]() ![]() |
Trochę się pospieszyłem z tym postem na forum. Poczytałem o INNER JOIN i już pare rzeczy się rozjaśniło
![]() Tak, czy siak dzięki ![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 05:40 |