Twoje PC  
Zarejestruj się na Twoje PC
TwojePC.pl | PC | Komputery, nowe technologie, recenzje, testy
B O A R D
   » Board
 » Zadaj pytanie
 » Archiwum
 » Szukaj
 » Stylizacja

 
M E N U
  0
 » Nowości
0
 » Archiwum
0
 » Recenzje / Testy
0
 » Board
0
 » Rejestracja
0
0
 
Szukaj @ TwojePC
 

w Newsach i na Boardzie
 
OBECNI NA TPC
 
 » Pinokio.p 00:43
 » doxent 00:17
 » Chrisu 00:06
 » XepeR 00:04
 » john565 23:56
 » rooter666 23:55
 » Pio321 23:53
 » muerte 23:44
 » cVas 23:40
 » yanix 23:32
 » Kenny 23:28
 » Flo 23:16
 » Shark20 23:13
 » dugi 23:12
 » DJopek 23:11
 » ManiusNG 23:02
 » maddog 22:59
 » faf 22:51
 » JaroMi 22:49
 » Dexter 22:45

 Dzisiaj przeczytano
 41144 postów,
 wczoraj 25974

 Szybkie ładowanie
 jest:
włączone.

 
ccc
TwojePC.pl © 2001 - 2024
A R C H I W A L N A   W I A D O M O Ś Ć
    

[SQL] powiazanie 2 tabel , Outsider 15/07/05 23:34
po ostatnim pytaniu z sql'a stwierdzam, ze jest tutaj kilku Panow, ktorzy znaja temat. Dzis cos takiego.

Mam 2 tabele i chce je ze soba powiazac. W kazdej z nich mam te sama kolumne danych UNID. Domyslam sie, ze musze skorzystac z look up'ow, ale do konca nie wiem jak. Moze ktos pomoc?
Jest mi to potrzebne do exportu do jeszcze innej tabeli... A dane przeciez musza sie zgadzac wierszami.

Okiełznany Ukierunkowany Twór
Sometimes Informatycznie
zDEspeRowany...

  1. czyli oracle? , Wedrowiec 15/07/05 23:40
    to ja wymiękłem:/

    "Widziałem podręczniki
    Gdzie jest czarno na białym
    Że jesteście po**bani"

    1. Wedro, co u Ciebie? , Outsider 16/07/05 00:04
      dawno nie gadalismy. Jakos ostatnio nie porodze mi na nol, a tutaj glownie czytam - musze to nadrobic.

      Widze, ze masz fajny adres e-mail. Jak zdobyc skrzynke w tej domenie?

      Okiełznany Ukierunkowany Twór
      Sometimes Informatycznie
      zDEspeRowany...

      1. Zdobyć?! , Agnes 16/07/05 00:09
        To się nie da! Wędro, powiedz mu!

        Metafizyka: - Poznaj, proszę, to jest
        Fizyk, a to jego Meta...

      2. Całkiem nieźle:))) , Wedrowiec 16/07/05 00:12
        Mail dostałem ponad rok temu na urodziny (o ile mówimy o twojepc) - Agnes załatwiła :)))

        Obecny "służbowy" mail bardzo szanuję - robota na którą czekałem. I to jest właśnie odpowiedź co u mnie - zadowolony jestem. Perspektywy dobre, robota świetna :)))

        No i szanse są, że w robocie za jakiś czas oracla się również nauczę - wtedy pewnie w trakcie do Ciebie się będę zgłaszał.

        W temacie chyba nie pomogę - mysql only więc raczej na poziomie skryptu bym to kontrolował.

        "Widziałem podręczniki
        Gdzie jest czarno na białym
        Że jesteście po**bani"

  2. A możesz sprecyzować? , Ksyho 15/07/05 23:48
    Powiązanie? Masz na myśli "złączenie"? Wtedy najprostrzym będzie np:

    select kol1, kol2, kol3, UNID
    from tab1, tab2
    where UNID.tab1=UNID.tab2

    1. esportuje dane z roznych tabel do innych , Outsider 16/07/05 00:02
      tabele te zawieraja jednak powiazane ze soba dane. W kazdej tabeli znajdziesz rekord odpowiadajacy innemu i 2 tabeli itd. Wszystkie tabele maja kolumne z numerami UNID identyfikujacymi rekordy.

      Teraz gdy chce dokonac eksportu danych i lacze dane z 2 lub wiekszej liczby tabel musze sprawdzic, czy biore z opowiednich rekordow.

      Wlasnie do tego potrzebuje identyfikacji.

      Okiełznany Ukierunkowany Twór
      Sometimes Informatycznie
      zDEspeRowany...

    2. zla kolejnosc... , xmac 16/07/05 09:30
      powinno byc:
      select t1.kol1, t2.kol2, t1.kol3, t1.UNID
      from tab1 t1, tab2 t2
      where t1.UNID=t2.UNID
      t1 i t2 to aliasy do tabel, ulatwiaja pisanie, jak nazwy tabel sa dlugie, albo nic nie mowia, lub kiedy musisz napisac nazwa_bazy.dbo.nazwa_tabeli

      dual&mobile power
      XMAC

      1. oczywiście , Ksyho 16/07/05 11:12
        masz racje :)

  3. chyba tak... , OBrian 16/07/05 00:10
    select a.UNID, kolumna1, kolumna2
    from Tabela a
    full outer join Tabela b
    on (a.UNID = b.UNID);

    ThinkPad R400 #! CrunchBang Linux -
    Powered by Debian

    1. no wlasnie pytanie o co do konca chodzi. , Wedrowiec 16/07/05 00:16
      joina mozna wher'em zastapic (wydajniej) ale pytanie sugeruje cos trudniejszego.

      "Widziałem podręczniki
      Gdzie jest czarno na białym
      Że jesteście po**bani"

      1. z wydajnoscia to roznie bywa... , xmac 16/07/05 09:24
        zalezy jaka baza
        ogolnie jak dla mnie to where jest bardziej czytelny i uniwersalny

        dual&mobile power
        XMAC

        1. zazwyczaj wydajnosc jest identyczna , zozol 16/07/05 12:24
          bo baza dla obu tych zapisow (join i where) generuje taki sam plan wykonania
          Co do uniwersalnosci to w wiekszosci baz nie jestes w stanie zrobic LEFT JOIN (i RIGHT JOIN) za pomocą where'a - jest to mozliwe np. w oraclu za pomocą "(+)"
          Dlatego dla prostych zapytan (laczacych do 4-5 tabel) stosuje where'y, a jak w polaczeniu wystepuje tabel od cholery i troche, albo trzeba robic left joiny to stosuje wlasnie JOINy

          1. testowaliśmy z kumpelm różnice , Wedrowiec 16/07/05 13:04
            ja na mysql'u, on na oraclu - whery były dużo szybsze od join'ow, pomagałem kumplowi przy pracy o optymalizacji zapytań - wiele źródeł również twierdziło, że whery są dużo szybsze.

            U kumpla w robocie na oraclu joiny zarzynały bazę, po przejsciu na dobrze skonstruowane whery było dużo lepiej.

            "Widziałem podręczniki
            Gdzie jest czarno na białym
            Że jesteście po**bani"

            1. To coś źle testowaliście ;) , pachura 16/07/05 14:52
              Oracle'owa notacja (+) jest równoważna left joinowi - poniższe zapytania mają taki sam plan zapytania:
              1. select * from a, b where b.parent_id(+) = a.id
              2. select * from a left join b on b.parent_id = a.id

              Po drugie w składni MySQL-a nie ma operatora (+), więc jak mogłeś to wytestować? Jedyne co przychodzi mi do głowy, to zastąpienie left joina przez zwykłe "where b.parent_id = a.id" (czyli cross join) i doklejenie brakującej reszty rekordów po union all, ale to już wybitnie zmniejsza czytelność.

              W ogóle nie wyobrażam sobie jak mogliście zarżnąć Oracle'a joinami ;) - no chyba że stał na komputerze z 64MB RAM-u, albo kolumny były źle (albo wcale) poindeksowane. Oracle ma tak dobry optymalizator zapytań, że nawet tragicznie napisane queries wykonują się bardzo szybko - w innych bazach trzeba poświęcać dużo więcej czasu na optymalizacje.

              Jakbyś mógł, podeślij linki do źródeł które mówią że where'y są dużo szybsze od joinów.

              1. nie korzystałem z (+) - jak piszę, , Wedrowiec 16/07/05 15:30
                na oraclu się nie znam a w mysqlu tego nie ma;)

                Poszukam magisterki kumpla - gdzieś chyba mam na dysku - przejrzę bibliografię. Albo kumpla ścignę tyle, że on teraz nad morzem miodowy chyba świętuje (zresztą boardowicz).

                "Widziałem podręczniki
                Gdzie jest czarno na białym
                Że jesteście po**bani"

                1. sam rowniez chetnie poczytam jakies dobre zrodla , Outsider 16/07/05 17:04
                  wiec jesli cos masz to wystawiaj

                  Z problemem sobie poradzilem. Rozwiazanie bylo banalnie proste. Wystarczylo zjesc sniadanie i wypic kawe. Jak jest sie najedzonym odrazu lepiej sie mysli :P

                  Okiełznany Ukierunkowany Twór
                  Sometimes Informatycznie
                  zDEspeRowany...

                  1. ...a podzielisz się , OBrian 16/07/05 17:30
                    doświadczeniem?
                    Jak w końcu rozwiązałeś problem? W końcu innym też się może przydać,
                    ja np. chętnie bym się dowiedział, jeżeli oczywiście nie masz nic przeciwko...

                    ThinkPad R400 #! CrunchBang Linux -
                    Powered by Debian

                    1. zasadniczo polaczylem tabele joinami , Outsider 16/07/05 22:08
                      co do sporu pomiedzy wydajnoscia where'a i join'a to powiem, krotko. Gdy w MS SQL'u napisze sie komendy oparte na where'ach to ten w trakcie wykonania zapytania przerobi sobie na join. W przypadku oracla, naprawde nie ma znaczenia czego uzywamy. Jak pisal jeden z poprzednikow, jest on tak wydajny, ze nie robi to zadnej roznicy.
                      W sumie to co teraz robie to jest do zniesienia. Ale za jakis tydzien bede mial do wyciagniecia dane z firebirda i tu zrobia sie klocki :(

                      Okiełznany Ukierunkowany Twór
                      Sometimes Informatycznie
                      zDEspeRowany...

                  2. wystawic nie wystawie - , Wedrowiec 17/07/05 03:28
                    knigi z biblioteki glownie wiec jak cos tytuly rzuce.

                    "Widziałem podręczniki
                    Gdzie jest czarno na białym
                    Że jesteście po**bani"

    
All rights reserved ® Copyright and Design 2001-2024, TwojePC.PL