Запрос сразу из двух баз

docjohn

Новичок
Запрос сразу из двух баз

Есть надобность сделать запрос из двух баз.
Делаю:
define("HostName1","host1");
define("DBName1", "name1");
define("UserName1","user1");
define("Password1","pass1");
$conn1=mysql_connect(HostName1,UserName1,Password1);

define("HostName2","host2");
define("DBName2", "name2");
define("UserName2","user2");
define("Password2","pass2");
$conn2=mysql_connect(HostName2,UserName2,Password2);

mysql_db_query(DBName???,'select DBName1.table1.field1 as f1,DBName2.table2.field2 as f2 from DBName1.table1,DBName2.table2 where DBName1.table1.field1=DBName2.table2.field2',$conn???)

Что писать в DBName??? и в $conn??? ?
 

Keil

Guest
если базы данных разнесены по разным серверам, то сомнительно, что в одном запросе можно будет к ним обратиться, если нет, то создать юзера с пермишинами на обе дб и вместo mysql_db_query() юзать mysql_query(), с указанием префикса дб в запросе.
 

docjohn

Новичок
mysql_query имеет второй аргумент - идентификатор связи с текущей открытой базой.
но в указанном выше примере открываются сразу два соединения с двумя базами.
какое из них считать текущим, если при вызове mysql_query можно использовать только одну базу?

есть идеи?
 

AHTIXPICT

Новичок
Запрос к двум разным серверам с помощью mysql_query() невозможен
 

Keil

Guest
Originally posted by docjohn
mysql_query имеет второй аргумент - идентификатор связи с текущей открытой базой.
но в указанном выше примере открываются сразу два соединения с двумя базами.
какое из них считать текущим, если при вызове mysql_query можно использовать только одну базу?

есть идеи?
ещё раз, но медленней:

$db = mysql_connect(HOST, USER, PASS);
$dbname1 = "...";
$dbname2 = "...";

$sql = "INSERT INTO {$dbname1}.table1 SELECT * FROM {$dbname2}.table1";

$res = mysql_query($sql, $db);
 

Фанат

oncle terrible
Команда форума
фигурные скобки в этом примере лишние, поскольку во-первых, и без них работает, а, во-вторых, сбивают с толку, поскольку человек сочтет их частью sql - синтаксиса, а не пхп.

Keil, не надо умничать.
Если у тебя спрашивают пример работы с базой, то и надо показывать пример работы с базой.
Выделив, акцентировав ключевой элемент.

А так ты накидал кучу кода, а потом с нажимом и раздражением приходится повторять. И не раз, я тебя уверяю, придется.

docjohn
INSERT INTO DB1.table1 SELECT * FROM DB2.table1
 

Keil

Guest
Originally posted by Фанат
фигурные скобки в этом примере лишние, поскольку во-первых, и без них работает, а, во-вторых, сбивают с толку, поскольку человек сочтет их частью sql - синтаксиса, а не пхп.

Keil, не надо умничать.
Если у тебя спрашивают пример работы с базой, то и надо показывать пример работы с базой.
Выделив, акцентировав ключевой элемент.

А так ты накидал кучу кода, а потом с нажимом и раздражением приходится повторять. И не раз, я тебя уверяю, придется.

docjohn
INSERT INTO DB1.table1 SELECT * FROM DB2.table1
Я конечно дико извиняюсь, но это часть стиля, стиля, который предотвращает потом вопросы: "а почему echo "$myarray[$i] ..." не печатает?"
 

Фанат

oncle terrible
Команда форума
ЭТО НЕ ЧАСТЬ СТИЛЯ!
КОТОРАЯ ВОПРОСЫ ПРЕДОТВРАЩАЕТ!!!

Часть стиля, чоторая вопросы предотвращает, выглядит вот так: "INSERT INTO ".$dbname1.".table1
Это тебе на будущее. Чтобы выучил и запомнил навсегда.

Это пункт первый моих претензий.
Пункт второй.
ещё раз, но медленней
Давать ответ на вопрос желательно ЧЁТКИЙ и ЯСНЫЙ. Не допускающий двойного толкования.
Пример, сопровождающий ответ, по возможности должен содержать только ту информацию, которая необходима по данному вопросу.
А НЕ ПО ВОПРОСУ СИНТАКСИСА СТРОК В ПэХаПэ!

Я доступно поясняю, или надо повторить еще медленнее?

Извинения не приняты.
 

Keil

Guest
Originally posted by Фанат
ЭТО НЕ ЧАСТЬ СТИЛЯ!
КОТОРАЯ ВОПРОСЫ ПРЕДОТВРАЩАЕТ!!!

Часть стиля, чоторая вопросы предотвращает, выглядит вот так: "INSERT INTO ".$dbname1.".table1
Это тебе на будущее. Чтобы выучил и запомнил навсегда.

Это пункт первый моих претензий.
Пункт второй.
ещё раз, но медленней
Давать ответ на вопрос желательно ЧЁТКИЙ и ЯСНЫЙ. Не допускающий двойного толкования.
Пример, сопровождающий ответ, по возможности должен содержать только ту информацию, которая необходима по данному вопросу.
А НЕ ПО ВОПРОСУ СИНТАКСИСА СТРОК В ПэХаПэ!

Я доступно поясняю, или надо повторить еще медленнее?

Извинения не приняты.
НЕ НАДО КРИЧАТь, я хорошо слышу, если дать чёткий ответ, то человек и пальцем не пошевелит и в следующий раз не сможет вспомнить, а в чём же была фишка.

Часть стиля, чоторая вопросы предотвращает, выглядит вот так: "INSERT INTO `{$database}`.`{$table}` #..."
Это тебе на будущее. Чтобы выучил и запомнил навсегда.
 

docjohn

Новичок
Строка SELECT * FROM table1 выполняется.
Если же писать SELECT * FROM DB1.table1 то выдает ошибку "Supplied argument is not a valid...."
 

Фанат

oncle terrible
Команда форума
docjohn
Supplied argument - это не ошибка.
ошибку пишет тебе mysql_error()
запомни это крепко на будущее.
 

docjohn

Новичок
Пример сокращаю:
mysql_connect(HostName1,UserName1,Password1)
mysql_query('select * from DBName1.t_firm')

-~{}~ 02.11.04 08:42:

select * from DBName1.table1 не возвращает идентифиувотр результата
 

Фанат

oncle terrible
Команда форума
повторяю.
для тех, у кого очень большие проблемы со зрением.
ошибку пишет mysql_error()
название функции хорошо видно?
переписать по буквам в свойскрипт способностей хватит?
 

docjohn

Новичок
mysql_error сообщил что нет таблицы DBName1.table1
так как надо было писать 'select * from '.DBName1.'.table1'
все пашет
 
Сверху