ďťż
 
[Firebird] Łączenie dwóch tabel i wyświetlenie różnicy ďťż
 
[Firebird] Łączenie dwóch tabel i wyświetlenie różnicy
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[Firebird] Łączenie dwóch tabel i wyświetlenie różnicy



floran - 09-09-2006 01:06
[Firebird] Łączenie dwóch tabel i wyświetlenie różnicy
  Witam !

Mam dwie tabele. Obydwie tabele zawierają po jednej kolumnie. tab1 ma 25tyś
rekordów a tab2 33tyś rekordów. Nazwy kolumn dwóch tabel są te same oraz
wartości praktycznie te same. W tab1 brakuje tych kilku tysięcy, które są w
tab2 i na tych danych mi zależy.
W jaki sposób połączyć tabele i napisać selecta aby otrzymać dane RÓŻNICOWE,
czyli takie które są w tab2 a nie ma ich w tab1 a jak napisać selecta aby
otrzymać TYLKO części wspólne ?

pozdrawiam





Artur Gancarz - 09-09-2006 01:07

  Użytkownik floran napisał:
> Witam !
>
> Mam dwie tabele. Obydwie tabele zawierają po jednej kolumnie. tab1 ma 25tyś
> rekordów a tab2 33tyś rekordów. Nazwy kolumn dwóch tabel są te same oraz
> wartości praktycznie te same. W tab1 brakuje tych kilku tysięcy, które są w
> tab2 i na tych danych mi zależy.
> W jaki sposób połączyć tabele i napisać selecta aby otrzymać dane RÓŻNICOWE,
> czyli takie które są w tab2 a nie ma ich w tab1 a jak napisać selecta aby
> otrzymać TYLKO części wspólne ?
>
> pozdrawiam
>
>

Część wspólna to proste:

select kolumna from tab1,tab2 where tab1.kolumna=tab2.kolumna;

gdzie: "kolumna" to nazwa Twojej kolumny

Artur




Artur Gancarz - 09-09-2006 01:07

  Użytkownik floran napisał:

> Witam !
>
> Mam dwie tabele. Obydwie tabele zawierają po jednej kolumnie. tab1 ma 25tyś
> rekordów a tab2 33tyś rekordów. Nazwy kolumn dwóch tabel są te same oraz
> wartości praktycznie te same. W tab1 brakuje tych kilku tysięcy, które są w
> tab2 i na tych danych mi zależy.
> W jaki sposób połączyć tabele i napisać selecta aby otrzymać dane RÓŻNICOWE,
> czyli takie które są w tab2 a nie ma ich w tab1 a jak napisać selecta aby
> otrzymać TYLKO części wspólne ?
>
> pozdrawiam
>
>

Nie wiem jak w Firebird, ale w MySQL takie coś dla sprawdzenia "różnicy"
działa:

select tab2.kolumna, tab1.kolumna as kontrola from tab2 left join tab1
on tab2.kolumna=tab1.kolumna where kontrola is null;

"kolumna" to nazwa Twojej kolumny

Działa to mniej więcej tak, że do wszystkich rekordów z tabeli drugiej
dopasowuje "koniecznie" rekordy z tabeli pierwszej (warunek "on
coś=coś"), a jeśli nie ma, to zostawia pute. Tutaj na końcu warunek
"where" wyświetlający właśnie te, dla których nic nie znaleziono.

pozdrawiam
Artur




m m - 09-09-2006 01:07

  floran napisał(a):
> Witam !
>
> Mam dwie tabele. Obydwie tabele zawierają po jednej kolumnie. tab1 ma25tyś
> rekordów a tab2 33tyś rekordów. Nazwy kolumn dwóch tabel są te same oraz
> wartości praktycznie te same. W tab1 brakuje tych kilku tysięcy, które są w
> tab2 i na tych danych mi zależy.
> W jaki sposób połączyć tabele i napisać selecta aby otrzymaćdane RÓŻNICOWE,
> czyli takie które są w tab2 a nie ma ich w tab1 a jak napisać selecta aby
> otrzymać TYLKO części wspólne ?
>
> pozdrawiam
>
>
a może zadziała ta jak w postgresql

query1 UNION [ALL] query2
query1 INTERSECT [ALL] query2
query1 EXCEPT [ALL] query2

INTERSECT returns all rows that are both in the result of query1 and in
the result of query2. Duplicate rows are eliminated unless INTERSECT ALL
is used.

EXCEPT returns all rows that are in the result of query1 but not in the
result of query2. (This is sometimes called the difference between two
queries.) Again, duplicates are eliminated unless EXCEPT ALL is used.

Ktoś mógł by powiedzieć czy to zadziała ?





wloochacz - 09-09-2006 01:07

  [ciach]
> Ktoś mógł by powiedzieć czy to zadziała ?
Nie zadziała (fb nie zna INTERSECT), ale zadziała ze złączeniami.

--
wloochacz
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [mysql] =?ISO-8859-2?Q?wielko=B6=E6_bazy_a_stabilno=B6=E6=2C?==?ISO-8859-2?Q?_podzia=B3_du=BFej_bazy_a_powi=B1zania_tabel?= [MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?= Firebird - zmiana NULL na NOT NULL [firebird] Czym =?ISO-8859-2?Q?zast=B1pi=E6_postgresowy_inte?==?ISO-8859-2?Q?rval_=3F?= Insert do tabeli danymi z innej tabeli Firebird [mysql] Wyszukanie =?ISO-8859-2?Q?rekord=F3w=28powiazane_tabel?==?ISO-8859-2?Q?e=29?= [MySQL] Zapytanie z =?ISO-8859-2?Q?dw=F3ch_tabel_na_raz_?==?ISO-8859-2?Q?i_grupowanie_po_wsp=F3lnym_polu=2E_Jak_=3F?= Insert do tabeli z danych innej tabeli plus dodatkowa wartośćpola (Firebird) zapytanie do =?ISO-8859-2?Q?dw=F3ch_tabel_z_limitem_wier?==?ISO-8859-2?Q?szy?= [mysql] =?ISO-8859-2?Q?po=B3=B1czenie_tabel_wg_kolumn=2C_?==?ISO-8859-2?Q?nie_wierszy?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • czterowers.keep.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com