[newbie] MS SQL - praca =?ISO-8859-2?Q?jednocze=B6nie_na_2_?==?ISO-8859-2?Q?bazach_=28linkowanie_=3F=29?=
xclone - 28-06-2007 00:01
[newbie] MS SQL - praca =?ISO-8859-2?Q?jednocze=B6nie_na_2_?==?ISO-8859-2?Q?bazach_=28linkowanie_=3F=29?=
Witam.
Problem mam następujący: Mam 2 bliźniaczo zbudowane bazy (programu wf-mag), zawierające dane z 2 profili firmy. Chcę raportować Szefowi w CrystalRep.11 dane z obu profili w jednym raporcie. Czy jest możliwość (a jeśli tak, to w jaki sposób) odpytywania 2 baz w jednym momencie ? Chciałbym utworzyć taki link między tymi bazami, żeby CR11 myślał, że to jedna baza, lub żeby potrafił ciągnąć dane z obu. Bazy stoją na jednym serwerze (choć to chyba nie ma jakiegokolwiek znaczenia).
Dziękuję za pomoc.
-- Pozdr. xclone
Marcin Miga - 28-06-2007 00:01
=?iso-8859-2?q?Re:_MS_SQL_-_praca_jednocze=B6nie_na_2_bazach_(linkowanie_=3F) ?= xclone napisał(a): > Witam. > > Problem mam następujący: > Mam 2 bliźniaczo zbudowane bazy (programu wf-mag), zawierające dane z2 > profili firmy. Chcę raportować Szefowi w CrystalRep.11 dane z obu > profili w jednym raporcie. Czy jest możliwość (a jeśli tak, to w jaki > sposób) odpytywania 2 baz w jednym momencie ? Chciałbym utworzyć taki > link między tymi bazami, żeby CR11 myślał, że to jedna baza, lub żeby > potrafił ciągnąć dane z obu. Bazy stoją na jednym serwerze (choć to > chyba nie ma jakiegokolwiek znaczenia).
Ma znaczenie. Dla różnych serwerów musiałbyś robić linked serwer lub cos podobnego (openrowset, opendatasource...) - w każdym bądź razie nic łatwego i przyjemnego. Dla jednego serwera i różnych baz to tak: SELECT * FROM baza1.schemat1.tabela1 , baza2.schemat2.tabela2 oczywiscie schematy mozna pominac.
pozdrawiaMM
xclone - 28-06-2007 00:01
hMarcin Miga pisze:
> Dla jednego serwera i różnych baz to tak: > SELECT * FROM baza1.schemat1.tabela1 , baza2.schemat2.tabela2 > oczywiscie schematy mozna pominac. > > pozdrawiaMM > hmm.. to chyba nie będzie takie "proste" :/ obecnie zapytanie kierowane przez CRXI wygląda następująco:
SELECT "WIDOK_DOKUMENTHANDLOWY"."Numer", "WIDOK_POZYCJADOKUMENTU"."StawkaVAT", "WIDOK_KONTRAHENT"."Nazwa", "WIDOK_DOKUMENTHANDLOWY"."DataSprzedazy", "WIDOK_DOKUMENTHANDLOWY"."TerminPlatnosci", "WIDOK_DOKUMENTHANDLOWY"."WartoscNetto", "WIDOK_DOKUMENTHANDLOWY"."WartoscBrutto", "WIDOK_DOKUMENTHANDLOWY"."WartoscVAT", "WIDOK_DOKUMENTHANDLOWY"."Pozostalo", "DOKUMENT_HANDLOWY"."DATA_OST_ROZLICZENIA", "WIDOK_ARTYKUL"."Nazwa1", "WIDOK_DOKUMENTHANDLOWY"."TypDokumentu" FROM (((DOKUMENT_HANDLOWY "DOKUMENT_HANDLOWY" INNER JOIN WIDOK_DOKUMENTHANDLOWY "WIDOK_DOKUMENTHANDLOWY" ON "DOKUMENT_HANDLOWY"."NUMER"="WIDOK_DOKUMENTHANDLOW Y"."Numer") INNER JOIN WIDOK_KONTRAHENT "WIDOK_KONTRAHENT" ON "WIDOK_DOKUMENTHANDLOWY"."IdKontrahenta"="WIDOK_KO NTRAHENT"."IdKontrahenta") INNER JOIN WIDOK_POZYCJADOKUMENTU "WIDOK_POZYCJADOKUMENTU" ON "WIDOK_DOKUMENTHANDLOWY"."IdDokumentu"="WIDOK_POZY CJADOKUMENTU"."IdDokumentuHandlowego") INNER JOIN WIDOK_ARTYKUL "WIDOK_ARTYKUL" ON "WIDOK_POZYCJADOKUMENTU"."IdArtykulu"="WIDOK_ARTYK UL"."IdArtykulu" WHERE ("WIDOK_DOKUMENTHANDLOWY"."DataSprzedazy">={ts '2007-06-01 00:00:00'} AND "WIDOK_DOKUMENTHANDLOWY"."DataSprzedazy"<{ts '2007-06-30 00:00:01'})
możesz mi podpowiedzieć, jak to zastosować do powyższego ? (pomijam, że narazie nie wiem, czy CR będzie potrafił wykonać zapytanie przeze mnie napisane... :) ) however - dzięki za pomoc.
Marcin Miga - 29-06-2007 00:00
=?iso-8859-2?q?Re:_MS_SQL_-_praca_jednocze=B6nie_na_2_bazach_(linkowanie_=3F) ?=
On 27 Cze, 20:12, xclone <xcl...@irc.pl> wrote: > hmm.. to chyba nie będzie takie "proste" :/ > obecnie zapytanie kierowane przez CRXI wygląda następująco: > > SELECT "WIDOK_DOKUMENTHANDLOWY"."Numer", > "WIDOK_POZYCJADOKUMENTU"."StawkaVAT", "WIDOK_KONTRAHENT"."Nazwa", > "WIDOK_DOKUMENTHANDLOWY"."DataSprzedazy", > "WIDOK_DOKUMENTHANDLOWY"."TerminPlatnosci", > "WIDOK_DOKUMENTHANDLOWY"."WartoscNetto", > "WIDOK_DOKUMENTHANDLOWY"."WartoscBrutto", > "WIDOK_DOKUMENTHANDLOWY"."WartoscVAT", > "WIDOK_DOKUMENTHANDLOWY"."Pozostalo", > "DOKUMENT_HANDLOWY"."DATA_OST_ROZLICZENIA", "WIDOK_ARTYKUL"."Nazwa1", > "WIDOK_DOKUMENTHANDLOWY"."TypDokumentu" > FROM (((DOKUMENT_HANDLOWY "DOKUMENT_HANDLOWY" INNER JOIN > WIDOK_DOKUMENTHANDLOWY "WIDOK_DOKUMENTHANDLOWY" ON > "DOKUMENT_HANDLOWY"."NUMER"="WIDOK_DOKUMENTHANDLOW Y"."Numer") INNER JOIN > WIDOK_KONTRAHENT "WIDOK_KONTRAHENT" ON > "WIDOK_DOKUMENTHANDLOWY"."IdKontrahenta"="WIDOK_KO NTRAHENT"."IdKontrahenta"*) > INNER JOIN WIDOK_POZYCJADOKUMENTU "WIDOK_POZYCJADOKUMENTU" ON > "WIDOK_DOKUMENTHANDLOWY"."IdDokumentu"="WIDOK_POZY CJADOKUMENTU"."IdDokument*uHandlowego") > INNER JOIN WIDOK_ARTYKUL "WIDOK_ARTYKUL" ON > "WIDOK_POZYCJADOKUMENTU"."IdArtykulu"="WIDOK_ARTYK UL"."IdArtykulu" > WHERE ("WIDOK_DOKUMENTHANDLOWY"."DataSprzedazy">={ts '2007-06-01 > 00:00:00'} AND "WIDOK_DOKUMENTHANDLOWY"."DataSprzedazy"<{ts '2007-06-30 > 00:00:01'}) > > możesz mi podpowiedzieć, jak to zastosować do powyższego ? (pomijam, że > narazie nie wiem, czy CR będzie potrafił wykonać zapytanie przeze mnie > napisane... :) ) > however - dzięki za pomoc.
A spróbuj może sam, co? Potem wypiszesz ew. errory. A poza tym, to piszesz jakoś tak nie-po-sql-owemu. W MS SQL generalnie pisze się w [], a nie w "". Oprócz tego nie wiem, co to {ts '2007-06-30 00:00:01'} - jakieś ts, a dodatkowo w {} ?? A na dodatek nigdzie nie widzę abyś korzystał z dwóch baz danych... Pisałem wyraźnie: baza1.schemat1.tabela1. A pisząc, że schemat możesz pominąć miałem na myśli, że... możesz pominąć schemat, więc wyglądało by to tak: ... FROM baza1..tabela1. Wtedy zostanie pobrany domyślny schemat...
pozdrawiaMM
xclone - 30-06-2007 00:02
Marcin Miga pisze: > A spróbuj może sam, co? Potem wypiszesz ew. errory.
no, to właśnie efekt próby - popatrzyłem na zapytanie kierowane przez CRXI i zbaraniałem, bo nie potrafiłem zastosować twoej rady do tego, co zobaczyłem - dlatego poprosiłem o dalszą podpowiedź..
> A poza tym, to piszesz jakoś tak nie-po-sql-owemu. > W MS SQL generalnie pisze się w [], a nie w "". Oprócz tego nie wiem, > co to {ts '2007-06-30 00:00:01'} - jakieś ts, a dodatkowo w {} ??
taką składnią operuje CRXI.. za wiele na to nie poradzę.. a co do ts - parametr raportu - data
> A na dodatek nigdzie nie widzę abyś korzystał z dwóch baz danych... > Pisałem wyraźnie: baza1.schemat1.tabela1. A pisząc, że schemat możesz > pominąć miałem na myśli, że... możesz pominąć schemat, więc wyglądało > by to tak: ... FROM baza1..tabela1. Wtedy zostanie pobrany domyślny > schemat...
no, tyle to zrozumiałem, tylko chodziło mi o zastosowanie twojej wskazówki do zapytania z CRXI.. czyli właśnie do tego galimiatiasu, który wkleiłem.. no nic, jakoś spróbuję sobie poradzić.. dziękuję
-- Pozdr. xclone
LadyRoot - 02-07-2007 00:00
=?iso-8859-2?Q?Re:_MS_SQL_-_praca_jednocze=B6nie_na_2_bazach_=28linko?==?iso-8859-2?Q?wanie_=3F=29?= Użytkownik "xclone" <xclone@irc.pl> napisał w wiadomości news:f5u9as$q6i$1@news.onet.pl... > hMarcin Miga pisze: > >> Dla jednego serwera i różnych baz to tak: >> SELECT * FROM baza1.schemat1.tabela1 , baza2.schemat2.tabela2 >> oczywiscie schematy mozna pominac. >> >> pozdrawiaMM >> > hmm.. to chyba nie będzie takie "proste" :/ > obecnie zapytanie kierowane przez CRXI wygląda następująco: > > SELECT "WIDOK_DOKUMENTHANDLOWY"."Numer", > "WIDOK_POZYCJADOKUMENTU"."StawkaVAT", "WIDOK_KONTRAHENT"."Nazwa", > "WIDOK_DOKUMENTHANDLOWY"."DataSprzedazy", > "WIDOK_DOKUMENTHANDLOWY"."TerminPlatnosci", > "WIDOK_DOKUMENTHANDLOWY"."WartoscNetto", > "WIDOK_DOKUMENTHANDLOWY"."WartoscBrutto", > "WIDOK_DOKUMENTHANDLOWY"."WartoscVAT", > "WIDOK_DOKUMENTHANDLOWY"."Pozostalo", > "DOKUMENT_HANDLOWY"."DATA_OST_ROZLICZENIA", "WIDOK_ARTYKUL"."Nazwa1", > "WIDOK_DOKUMENTHANDLOWY"."TypDokumentu" > FROM (((DOKUMENT_HANDLOWY "DOKUMENT_HANDLOWY" INNER JOIN > WIDOK_DOKUMENTHANDLOWY "WIDOK_DOKUMENTHANDLOWY" ON > "DOKUMENT_HANDLOWY"."NUMER"="WIDOK_DOKUMENTHANDLOW Y"."Numer") INNER JOIN > WIDOK_KONTRAHENT "WIDOK_KONTRAHENT" ON > "WIDOK_DOKUMENTHANDLOWY"."IdKontrahenta"="WIDOK_KO NTRAHENT"."IdKontrahenta") > INNER JOIN WIDOK_POZYCJADOKUMENTU "WIDOK_POZYCJADOKUMENTU" ON > "WIDOK_DOKUMENTHANDLOWY"."IdDokumentu"="WIDOK_POZY CJADOKUMENTU"."IdDokumentuHandlowego") > INNER JOIN WIDOK_ARTYKUL "WIDOK_ARTYKUL" ON > "WIDOK_POZYCJADOKUMENTU"."IdArtykulu"="WIDOK_ARTYK UL"."IdArtykulu" > WHERE ("WIDOK_DOKUMENTHANDLOWY"."DataSprzedazy">={ts '2007-06-01 > 00:00:00'} AND "WIDOK_DOKUMENTHANDLOWY"."DataSprzedazy"<{ts '2007-06-30 > 00:00:01'}) > > możesz mi podpowiedzieć, jak to zastosować do powyższego ? (pomijam, że > narazie nie wiem, czy CR będzie potrafił wykonać zapytanie przeze mnie > napisane... :) ) > however - dzięki za pomoc.
O ile dobrze rozumiem, powyższe zapytanie jest na 1 z 2 baz, a ty chciałbyś pobrać dane z dwóch baz naraz (zakładając, że są identycznej budowy).
No to wystarczy:
select * --wszystkie powyższe from [serwer1].[baza1].właściciel.tabela join ...... union all select * --wszystkie powyższe from [serwer2].[baza2].właściciel.tabela join ......
na przyszłość możesz zrobić sobie taki widok i bierz wszystko z v_moj_nowy_widok
pozdrawiam
-- LadyRoot ---------------------------- no place like 127.0.0.1 live : lady_root(a)msn.com
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[oracle] - Oracle SQL Developer - co to jest SID?
[oracle] Baza danych do kursy Introduction to Oracle9i:PL/SQL ? Skąd ją pobrać ?
konkurs SQL Injection - 10 PLN na GSM dla pierwszej osoby, ktora dostanie sie do bazy
Re: Gdzie mozna jeszcze kupic Microsoft SQL 2000 Enterprise Edition??
ustawianie uprawnien uzytkownika SQL 2005 serwer express ORAZ w msde
[SQL] W jaki sposób zwrócić wiersze które NIE znadują się w 2 pozostałych kolumnach
[sybase] migracja z SQL Aynwhere 9 na ASE 15 Express Edition - dasie?
Przyspieszenie =?windows-1250?Q?dost=EApu_do_tabel_w_SQL_Server_2005?=
sql -> tworzenie nowej kolumny z dzielenia 2 innych i sortowanie po niej
[mysql] przeszukiwanie katalogu produktow
zanotowane.pldoc.pisz.plpdf.pisz.plptsite.xlx.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 |
|