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... - 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" - 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... - 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... - 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"
- 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- 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... - 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_tabelidual&mobile power
XMAC - oczywiście , Ksyho 16/07/05 11:12
masz racje :)
- 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 - 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" - z wydajnoscia to roznie bywa... , xmac 16/07/05 09:24
zalezy jaka baza
ogolnie jak dla mnie to where jest bardziej czytelny i uniwersalnydual&mobile power
XMAC - 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- 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" - 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.- 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" - 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 :POkiełznany Ukierunkowany Twór
Sometimes Informatycznie
zDEspeRowany... - ...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 - 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...
- 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 |
|
|
|
|