Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> odwołanie do innej bazy
dragossani
post 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
Go to the top of the page
+Quote Post
GeoS
post 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 biggrin.gif


--------------------
Zanim zadasz pytanie, zawsze wczesniej zajrzyj do manuala ( pl.php.net/manual/pl/ ).
Szukasz skryptow - www.hotscripts.com
Go to the top of the page
+Quote Post
dragossani
post 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
Go to the top of the page
+Quote Post
GeoS
post 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 biggrin.gif


--------------------
Zanim zadasz pytanie, zawsze wczesniej zajrzyj do manuala ( pl.php.net/manual/pl/ ).
Szukasz skryptow - www.hotscripts.com
Go to the top of the page
+Quote Post
dragossani
post 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
Go to the top of the page
+Quote Post
GeoS
post 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 biggrin.gif


--------------------
Zanim zadasz pytanie, zawsze wczesniej zajrzyj do manuala ( pl.php.net/manual/pl/ ).
Szukasz skryptow - www.hotscripts.com
Go to the top of the page
+Quote Post
dragossani
post 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
Go to the top of the page
+Quote Post
dragossani
post 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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.04.2024 - 18:48