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

  • Автор темы Автор темы docjohn
  • Дата начала Дата начала

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??? ?
 
если базы данных разнесены по разным серверам, то сомнительно, что в одном запросе можно будет к ним обратиться, если нет, то создать юзера с пермишинами на обе дб и вместo mysql_db_query() юзать mysql_query(), с указанием префикса дб в запросе.
 
mysql_query имеет второй аргумент - идентификатор связи с текущей открытой базой.
но в указанном выше примере открываются сразу два соединения с двумя базами.
какое из них считать текущим, если при вызове mysql_query можно использовать только одну базу?

есть идеи?
 
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);
 
фигурные скобки в этом примере лишние, поскольку во-первых, и без них работает, а, во-вторых, сбивают с толку, поскольку человек сочтет их частью sql - синтаксиса, а не пхп.

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

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

docjohn
INSERT INTO DB1.table1 SELECT * FROM DB2.table1
 
Originally posted by Фанат
фигурные скобки в этом примере лишние, поскольку во-первых, и без них работает, а, во-вторых, сбивают с толку, поскольку человек сочтет их частью sql - синтаксиса, а не пхп.

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

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

docjohn
INSERT INTO DB1.table1 SELECT * FROM DB2.table1
Я конечно дико извиняюсь, но это часть стиля, стиля, который предотвращает потом вопросы: "а почему echo "$myarray[$i] ..." не печатает?"
 
ЭТО НЕ ЧАСТЬ СТИЛЯ!
КОТОРАЯ ВОПРОСЫ ПРЕДОТВРАЩАЕТ!!!

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

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

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

Извинения не приняты.
 
Originally posted by Фанат
ЭТО НЕ ЧАСТЬ СТИЛЯ!
КОТОРАЯ ВОПРОСЫ ПРЕДОТВРАЩАЕТ!!!

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

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

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

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

Часть стиля, чоторая вопросы предотвращает, выглядит вот так: "INSERT INTO `{$database}`.`{$table}` #..."
Это тебе на будущее. Чтобы выучил и запомнил навсегда.
 
Строка SELECT * FROM table1 выполняется.
Если же писать SELECT * FROM DB1.table1 то выдает ошибку "Supplied argument is not a valid...."
 
docjohn
Supplied argument - это не ошибка.
ошибку пишет тебе mysql_error()
запомни это крепко на будущее.
 
Пример сокращаю:
mysql_connect(HostName1,UserName1,Password1)
mysql_query('select * from DBName1.t_firm')

-~{}~ 02.11.04 08:42:

select * from DBName1.table1 не возвращает идентифиувотр результата
 
повторяю.
для тех, у кого очень большие проблемы со зрением.
ошибку пишет mysql_error()
название функции хорошо видно?
переписать по буквам в свойскрипт способностей хватит?
 
mysql_error сообщил что нет таблицы DBName1.table1
так как надо было писать 'select * from '.DBName1.'.table1'
все пашет
 
Сверху