Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: referencja i NULL ?
Forum PHP.pl > Forum > Bazy danych
evo
Sa dwie tabelki

Kod
    +------------------------+------------------------+
    |                     TABELA_1                    |
    +------------------------+------------------------+
    |          pole          |     tabel2_pole_ID     |
    +------------------------+------------------------+
    |        wartosc1        |            1           |
    |        wartosc2        |            2           |
    |        wartosc3        |            2           |
    |        wartosc4        |          NULL          |
    |        wartosc5        |          NULL          |    
    +------------------------+------------------------+  
    
    
    
    +------------------------+------------------------+
    |                     TABELA_2                    |
    +------------------------+------------------------+
    |          pole_ID       |           pole         |
    +------------------------+------------------------+
    |            1           |          cos1          |
    |            2           |          cos2          |
    +------------------------+------------------------+    


Teraz wysylam zapytanie:

  1. SELECT TABELA_1.pole, TABELA_2.pole
  2. FROM TABELA_1, TABELA_2
  3. WHERE TABELA_1.tabel2_pole_ID=TABELA_2.poleID;



w rezurtacie otrzymuje:
Kod
    +------------------------+------------------------+
    |       TABELA_1.pole    |     TABELA_2.pole      |
    +------------------------+------------------------+
    |        wartosc1        |          cos1          |
    |        wartosc2        |          cos1          |
    |        wartosc3        |          cos2          |
    +------------------------+------------------------+    



problem w tym ze TABELA_1.tabela2_poleID moze byc NULL i gdy mam w TABELA_1.pole wartosc4 i wartosc5 gdzie TABLEA_1. tabela2_pole_ID jest NULL to po tym zapytaniu nie zostanie to wyciagniete. ...Rzecz jasana bo zapytanie dokladnie mowi ze TABELA_1.tabel2_pole_ID=TABELA_2.poleID.


PYTANIE:

Jak zbudowac zapytanie by jesli TABELA_1.tabel2_pole_ID jest NULL to zwracane TABELA_2.pole ma tez byc NULL i w efekcje dostane cos takiego:

Kod
    +------------------------+------------------------+
    |       TABELA_1.pole    |     TABELA_2.pole      |
    +------------------------+------------------------+
    |        wartosc1        |          cos1          |
    |        wartosc2        |          cos1          |
    |        wartosc3        |          cos2          |
    |        wartosc4        |          NULL          |
    |        wartosc5        |          NULL          |    
    +------------------------+------------------------+    


Z gory dziekuje i pozdrawiam
evo
No1B
nie wiem jak jest z obsluga left i right join'ow w mysql,
ale w mssql zadziala cosik takiego"

  1. SELECT a.pole, a.pole
  2. FROM TABELA_1 a
  3. LEFT JOIN TABELA_2 b ON tabel2_pole_ID=poleID


pozdrawiam
evo
dzieki tak dziala!

  1. SELECT a.pole, b.pole
  2. FROM TABELA_1 a
  3. LEFT JOIN TABELA_2 b ON a.tabel2_pole_ID=b.poleID;


dziekuje i pozdrawiam
evo


EDIT:

a moglbys tak laptologicznie wytlumaczyc co te left join i right join dokladnie robie? bo troche tego nei rozumiem smile.gif


Pozdrawiam
sobstel
Cytat(evo @ 2005-05-04 15:07:59)
a moglbys tak laptologicznie wytlumaczyc co te left join i right join dokladnie robie? bo troche tego nei rozumiem smile.gif

np. tab1 LEFT JOIN tab2 ON tab1.id = tab2.id. wtedy pobierane sa <b>wszystkie</b> rekordy z tabeli tab1 i dopasowywane sa do nich te z tabeli tab2. tam gdzie tab1 nie ma swoich odpowiednikow w tab2 pojawiaja sie NULLe. RIGHT JOIN analogicznei tyle ze sa pobeirane wszystkie rekordy z tabeli tab2 (tej po prawej).
No1B
left join pokaze wszystkie rekordy z tablicy nadrzednej (w tym przypadku Tabela_1)
nawet jesli w tablicy podrzednej (tabela_2) nie ma klucza (odpowiednikow).

right - odwrotnie

sa jeszcze full joiny, cross joiny

Pozdrawiam
evo
dziekuje i pozdrawiam
evo
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.