SQL SELECT na tabulky z jiné databaze

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
gavec
Člen | 68
+
0
-

Ahoj, prosim vá mohl by mi někdo poradit s tím, jak pomocí dibi vytvořím dotaz, kde chci pouzit tabulku z jine databaze? Hledal jsem, ale bohuzel bez uspechu.

Předem díky za každou radu.

gavec
Člen | 68
+
0
-

BTW obe databaze jsou na localhostu.

mr.mac
Člen | 87
+
0
-

gavec napsal(a):

BTW obe databaze jsou na localhostu.

Prostě si musíš vytvořit nové připojení asi takto:

$connect1 = dibi::connect($container->params['database1']);
$connect2 = dibi::connect($container->params['database2']);

Např.: config.neon by mohl vypdat asi takto:

common:
	php:
		date.timezone: Europe/Prague
	database1:
		driver: mysql
		host: local
		username: user
		database: db1
		password: xxx

	database2:
		driver: mysql
		host: local
		username: user
		database: db2
		password: xxx

Nebo to je jinak? Nemám to odzkoušené, ale budu to zanedlouho řešit (bohužel s MS SQL serverem, každá DB úúúplně jinde).

Editoval mr.mac (16. 10. 2011 13:26)

nanuqcz
Člen | 822
+
0
-

On to asi myslel tak, že chce v jednom SQL dotazu použít (třeba) JOIN na tabulku z jiné DB. To podle mě nejde, ale třeba tady někdo bude znát řešení..

mr.mac
Člen | 87
+
0
-

xxxObiWan napsal(a):

On to asi myslel tak, ..

To podle mě opravdu nejde, musí si udělat 2× conection, 2× select a pak si pohrát s fetchnutými daty „ručně“.

petr.pavel
Člen | 535
+
0
-

Jde o to, jestli má jediný db uživatel přístup k oběma databázím. Jestli jo, tak lze v jediném dotazu kombinovat obě. Příklad pro MySQL:

SELECT * FROM `databaze1`.tabulka
UNION SELECT * FROM `databaze2`.tabulka

(Nejde tu o Dibi, takže píši jen SQL.)

Jestli takový uživatel neexistuje, tak máš smůlu a do jednoho dotazu to nenacpeš.

Milo
Nette Core | 1283
+
0
-

Jak píše petr.pavel. U MySQL to lze, pokud má uživatel, kterým se připojuješ, potřebná práva k obou dvoum tabulkám.

dibi::query('SELECT * FROM [db1.tabulka] JOIN [db2.tabulka] ......')
mr.mac
Člen | 87
+
0
-

petr.pavel napsal(a):

Jde o to, …

Vyzkoušeno i u MS SQL, chodí rovněž – za stejných předpokladů.