odwołanie do innej bazy |
odwołanie do innej bazy |
2.10.2002, 13:05:53
Post
#1
|
|
Grupa: Przyjaciele php.pl Postów: 398 Pomógł: 0 Dołączył: -- Skąd: Poznań Ostrzeżenie: (0%) |
Zaznaczam, że postgresa uruchomiłem pierwszy raz kilka dni temu i jestem zielony, stąd pytanie.
Jak dorwać się do kilu baz jednocześnie w jednym zapytaniu? W MySQL'u robię po prostu "SELECT tabela1.pole1, tabela2.pole2 FROM baza1.tabela1 LEFT JOIN baza2.tabela2 USING(klucz_obcy)". A w Postgresie? Taki zapis mi nie działa. W ogóle siedząc w jednej bazie nie mogę dobrać się do drugiej. Siedząc w baza1 nie mogę zrobić "SELECT * FROM baza2.tabela2". Wywala błąd: parse error at or near "." -------------------- cease this long, long rest / wake and risk a foul weakness to live / when it all comes down / watch the smoke and bury the past again / sit and think what will come / raise your fears and cast them all away
|
|
|
2.10.2002, 13:37:44
Post
#2
|
|
Grupa: Zarejestrowani Postów: 602 Pomógł: 0 Dołączył: -- Skąd: W - WA -> GRO Ostrzeżenie: (0%) |
Troche namieszales. Piszac o MySQLu miales chyba na mysli dzialania na roznych tabelach i kolumnach jednej bazy :!:
PS Polecam kolejnego manuala: http://www.postgresql.org/idocs/ i np. dokument: http://www.postgresql.org/idocs/index.php?...orial-join.html -------------------- Zanim zadasz pytanie, zawsze wczesniej zajrzyj do manuala ( pl.php.net/manual/pl/ ).
Szukasz skryptow - www.hotscripts.com |
|
|
2.10.2002, 13:50:47
Post
#3
|
|
Grupa: Przyjaciele php.pl Postów: 398 Pomógł: 0 Dołączył: -- Skąd: Poznań Ostrzeżenie: (0%) |
jednej bazy :?:
Miałem na myśli dokładnie to co napisałem. Jedno zapytanie do dwóch tabel w dwóch różnych bazach. Silnik ten sam, na tej samej fizycznie maszynie ale 2 bazy i w nich tabele i w nich pola. Zapytanie ma ciągnąć dane z obu. To jakiś problem? Czytałem na liście dyskusyjnej postgresa, że pracują nad zapytaniami do zupełnie zdalnych baz. Coś w stylu: SELECT zdalna_baza.tabela.* FROM zdalna_baza(213.17.224.50,login,hasło) Skoro takie są plany to zakładam, że dostęp do lokalnych baz już jest... -------------------- cease this long, long rest / wake and risk a foul weakness to live / when it all comes down / watch the smoke and bury the past again / sit and think what will come / raise your fears and cast them all away
|
|
|
2.10.2002, 18:48:53
Post
#4
|
|
Grupa: Zarejestrowani Postów: 602 Pomógł: 0 Dołączył: -- Skąd: W - WA -> GRO Ostrzeżenie: (0%) |
Cytat Skoro takie są plany to zakładam, że dostęp do lokalnych baz już jest...
To dokladnie oznacza jedno - takie sa plany -------------------- Zanim zadasz pytanie, zawsze wczesniej zajrzyj do manuala ( pl.php.net/manual/pl/ ).
Szukasz skryptow - www.hotscripts.com |
|
|
3.10.2002, 12:38:02
Post
#5
|
|
Grupa: Przyjaciele php.pl Postów: 398 Pomógł: 0 Dołączył: -- Skąd: Poznań Ostrzeżenie: (0%) |
Hm, widzę że się nie rozumiemy. :?
Wejdź sobie do MySQLa. Stwórz sobie 2 bazy danych i w każdej z nich po jednej tabelce i trochę danych. Przykładowy kod: Kod CREATE DATABASE baza1;
USE baza1; CREATE TABLE tabela1 (id_tabela1 INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, value VARCHAR(40) NOT NULL); INSERT INTO tabela1 (id_tabela1, value) VALUES (NULL, 'rekord numer [1] w [tabela1] w [baza1]'); INSERT INTO tabela1 (id_tabela1, value) VALUES (NULL, 'rekord numer [2] w [tabela1] w [baza1]'); INSERT INTO tabela1 (id_tabela1, value) VALUES (NULL, 'rekord numer [3] w [tabela1] w [baza1]'); CREATE DATABASE baza2; USE baza2; CREATE TABLE tabela2 (id_tabela2 INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, value VARCHAR(40) NOT NULL); INSERT INTO tabela2 (id_tabela2, value) VALUES (NULL, 'rekord numer [1] w [tabela2] w [baza2]'); INSERT INTO tabela2 (id_tabela2, value) VALUES (NULL, 'rekord numer [2] w [tabela2] w [baza2]'); INSERT INTO tabela2 (id_tabela2, value) VALUES (NULL, 'rekord numer [3] w [tabela2] w [baza2]'); Następnie wydaj polecenie Kod USE baza1;
SHOW TABLES; Zobaczysz, że widać tylko tabela1 - po prostu siedzisz w baza1. Możesz sobie wydać polecenie: Kod SELECT * FROM tabela1; Normalka.
A teraz wydaj takie polecenie: Kod SELECT * FROM baza2.tabela2; I co? Siedzisz w baza1 ale widzisz zawartość tabela2 z baza2. Jeszcze jeden przykład:Kod SELECT tabela1.*,tabela2.value FROM baza1.tabela1, baza2.tabela2 WHERE tabela1.id_tabela1=tabela2.id_tabela2; . I jak? Zapytanie ciągnie dane z dwóch tabel w DWÓCH RÓŻNYCH bazach.
I teraz wróćmy do mojego pytania. Jak to zrobić w Postgresie? PS. Te zdalne bazy na innych hostach to była taka dygresja. -------------------- cease this long, long rest / wake and risk a foul weakness to live / when it all comes down / watch the smoke and bury the past again / sit and think what will come / raise your fears and cast them all away
|
|
|
3.10.2002, 12:48:02
Post
#6
|
|
Grupa: Zarejestrowani Postów: 602 Pomógł: 0 Dołączył: -- Skąd: W - WA -> GRO Ostrzeżenie: (0%) |
OK. Wszystko jest juz jasne
-------------------- Zanim zadasz pytanie, zawsze wczesniej zajrzyj do manuala ( pl.php.net/manual/pl/ ).
Szukasz skryptow - www.hotscripts.com |
|
|
4.10.2002, 16:36:14
Post
#7
|
|
Grupa: Przyjaciele php.pl Postów: 398 Pomógł: 0 Dołączył: -- Skąd: Poznań Ostrzeżenie: (0%) |
No w moim pytaniu mam nadzieję, że jasne.
Natomiast odpowiedzi ni widu ni słychu. Powiem szczerze, myślałem, że to banał... Ma ktoś na to koncepcję? -------------------- cease this long, long rest / wake and risk a foul weakness to live / when it all comes down / watch the smoke and bury the past again / sit and think what will come / raise your fears and cast them all away
|
|
|
11.10.2002, 12:36:53
Post
#8
|
|
Grupa: Przyjaciele php.pl Postów: 398 Pomógł: 0 Dołączył: -- Skąd: Poznań Ostrzeżenie: (0%) |
Fragment z książki "Practical PostgreSQL":
Cytat Byc może nie wszyscy wiedza, że system PostgreSQL może jednoczesnie zarzadzac kilkoma bazami danych, z których każda posiada swojego własciciela oraz zawiera unikalne tabele, widoki, wskazniki, sekwencje i funkcje.
W celu utworzenia tabeli, funkcji lub dowolnego innego obiektu bazy danych należy uzyskac połaczenie z konkretna baza danych poprzez klienta PostgreSQL. Po uzyskaniu połaczenia można utworzyc obiekt, który jest wówczas obiektem bazy, z która uzyskano połaczenie, a zatem jest niedostepny z jakiejkolwiek innej bazy danych (chociaż klient może posiadac otwarte połaczenia z kilkoma różnymi bazami danych). Tworzac podstawowe obiekty bazodanowe w osobnych bazach danych zmniejsza sie ryzyko powstawania konfliktu nazw przy wybieraniu nazwy tabeli, która już wybrano w innym celu (na przykład gdy dwóch użytkowników chce wykorzystac w dwóch oddzielnych aplikacjach tabele nazywana products). Jest tak, ponieważ żadna z baz danych nie zawiera informacji o elementach innej bazy danych i nie podejmie próby utworzenia jakiegokolwiek zwiazku logicznego pomiedzy nimi. Ponadto, ponieważ ta sama zasada ma zastosowanie do obiektowo-relacyjnych obiektów danych, użytkownicy w swojej bazie danych moga nawet tworzyc funkcje i definicje jezyka, które sa niedostepne dla innych użytkowników połaczonych z innymi bazami danych działajacymi w PostgreSQL. Skoro w tak się przedstawia sytuacja, to jakim cudem MySQL umożliwia tak swobodne manewry, jak te, o których pisałem powyżej? -------------------- cease this long, long rest / wake and risk a foul weakness to live / when it all comes down / watch the smoke and bury the past again / sit and think what will come / raise your fears and cast them all away
|
|
|
Wersja Lo-Fi | Aktualny czas: 28.04.2024 - 03:16 |