Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] Select na dwoch tabelach, jak?
MiChaSSs
post
Post #1





Grupa: Zarejestrowani
Postów: 65
Pomógł: 4
Dołączył: 6.09.2007

Ostrzeżenie: (0%)
-----


Hej,
Mam dwie tabele, w ktorych tylko 2 kolumny sa takie same, przyklad:

tabela_nr1
  1. kolumna_a | kolumna_b | kolumna_c | kolumna_d

tabela_nr2
  1. kolumna_a | kolumna_e | kolumna_f | kolumna_d


i chcialbym za pomoca selecta uzyskac poloczone te dwie tabele na takiej zasadzie, ze dla tabeli nr 1 w miejscach gdzie wystepuja kolumny kolumna_e, kolumna_f wystepowaly wartosci NULL albo zeby w tych miejscach niczego nie bylo (pusta komorka) - podobnie dla tabeli nr 2:

  1. kolumna_a | kolumna_b | kolumna_c | kolumna_d | kolumna_e | kolumna_f |
  2. wart_z_t1 | wart_z_t1 | wart_z_t1 | wart_z_t1 | NULL | NULL |
  3. wart_z_t2 | NULL | NULL | wart_z_t2 | wart_z_t2 | wart_z_t2 |


Jest cos takiego mozliwe?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Tak, jest możliwe, ale nieco zamotane, gdyż musisz większość danych podać jawnie (IMG:style_emoticons/default/smile.gif)
Zakładając taką strukturę jaką podałeś będzie to wyglądało tak:
  1. SELECT *, NULL AS kolumna_e, NULL AS kolumna_f FROM tabela_nr1
  2. UNION
  3. SELECT kolumna_a, NULL, NULL, kolumna_d, kolumna_e, kolumna_f FROM tabela_nr2

Taka składnia jest konieczna, ponieważ dla UNION ważna jest kolejność kolumn w pierwszej tabeli, gdyż to ona jest przedstawiana w wyniku. Jeśli luki będą inaczej, będziesz musiał wszystkie kolumny jawnie rozpisać, tak jak dla tabela_nr2. Niestety tak działa UNION i trzeba to zaakceptować. Przy UNION liczba kolumn w obu tabelach musi być identyczna i nazewnictwo kolumn wynikowych jest zgodne z tabelami w tabeli pierwszej, dlatego użyłem aliasów w tabela_nr1 by były zgodne z nazewnictwem w tabela_nr2, ale głównie tylko dla wygody, bo moglem je nazwać jakkolwiek. Mogłem w tabela_nr2 pominąć sobie także nazwanie ich jakkolwiek, bo nazwy kolumn przy UNION z drugiej tabeli są ignorowane przy wyniku i ważna jest tylko kolejność. Gdybym jednak najpierw chciał wyświetlić dane z tabela_nr2 to składnia zapytania wyglądała by tak:
  1. SELECT kolumna_a, NULL AS kolumna_b, NULL AS kolumna_c, kolumna_d, kolumna_e, kolumna_f FROM tabela_nr2
  2. UNION
  3. SELECT *, NULL, NULL FROM tabela_nr1

W tym przykładzie kolumny są przemieszane z NULLami i konieczne jest jawne nazwanie ich by się nic nie porąbało Nam. W UNION niestety musimy uważać w jakiej kolejności jakie kolumny dajemy :/

Ten post edytował thek 24.08.2009, 00:08:40
Go to the top of the page
+Quote Post
MiChaSSs
post
Post #3





Grupa: Zarejestrowani
Postów: 65
Pomógł: 4
Dołączył: 6.09.2007

Ostrzeżenie: (0%)
-----


Bardzo dziekuje za odpowiedz, postaram sie przetestowac to co napisales jak znajde chwile czasu, pozdr (IMG:style_emoticons/default/winksmiley.jpg)

P.S Jak cos bede Cie jeszcze meczyl (IMG:style_emoticons/default/tongue.gif) (IMG:style_emoticons/default/winksmiley.jpg)

========================

Dziala, dziekuje (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 18:12