Запрос к 2-м БД

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
igor3310
Сообщения: 75
Зарегистрирован: 2015.07.24, 10:33

Запрос к 2-м БД

Сообщение igor3310 »

Здравствуйте!
Помогите составить запрос к 2-м БД:

1-я БД auto22016 в ней таблица ARTICLES содержит ART_ID, ART_ARTICLE_NR - артикл и он же № запчасти, ART_SUP_ID - бренд запчасти числом (число это ссылается на таблицу BRANDS и его поле BRA_ID которое и отдает BRA_BRAND - !!! ТЕКСТОМ БРЕНД)

2-я БД elauto_im в ней таблица elauto_im в которой ART_NUM - артикл и он же № запчасти, SUP_BRAND - бренд запчасти ТЕКСТОМ!!! ,PRICE - цены соответсвенно

--------------
теперь задача составить запрос - так чтоб выбрать ART_ID (из таблицы №1) и PRICE (из таблицы №2)
Где АртукулЫ и Бренды(текстовые) совподали в 2-х таблицах
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Запрос к 2-м БД

Сообщение zelenin »

ваша база поддерживает запросы между разными БД?
igor3310
Сообщения: 75
Зарегистрирован: 2015.07.24, 10:33

Re: Запрос к 2-м БД

Сообщение igor3310 »

На Yii написан сайт - и вроде такое возможно
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Запрос к 2-м БД

Сообщение zelenin »

igor3310 писал(а): 2017.12.30, 14:21 На Yii написан сайт - и вроде такое возможно
ваша база поддерживает запросы между разными БД?
igor3310
Сообщения: 75
Зарегистрирован: 2015.07.24, 10:33

Re: Запрос к 2-м БД

Сообщение igor3310 »

у меня выделеный сервер - как это узнать?
igor3310
Сообщения: 75
Зарегистрирован: 2015.07.24, 10:33

Re: Запрос к 2-м БД

Сообщение igor3310 »

Вопрос не решен :(
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Запрос к 2-м БД

Сообщение ElisDN »

igor3310 писал(а): 2017.12.30, 15:05 как это узнать?
Пара вариантов:

- В документации к БД почитать
- Попробовать
igor3310
Сообщения: 75
Зарегистрирован: 2015.07.24, 10:33

Re: Запрос к 2-м БД

Сообщение igor3310 »

Как попробовать? Что именно сделать?

Версия MySQL-клиента: 5.5.54
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Запрос к 2-м БД

Сообщение ElisDN »

igor3310 писал(а): 2017.12.31, 10:28 Как попробовать? Что именно сделать?
Составить запрос с FROM db1.table1, db2.table2.
igor3310
Сообщения: 75
Зарегистрирован: 2015.07.24, 10:33

Re: Запрос к 2-м БД

Сообщение igor3310 »

А как правилно сделать запрос, делаю так? :

Код: Выделить всё

$user = Yii::app()->db->createCommand()
    ->select('db2.ART_ID')
    ->from('db.elauto_im, db2.auto22016')
	->limit(5)
    ->queryRow();
Но та идет подключение к 1-й БД (Yii::app()->db->createCommand()) , как правильно?
igor3310
Сообщения: 75
Зарегистрирован: 2015.07.24, 10:33

Re: Запрос к 2-м БД

Сообщение igor3310 »

С Новым Годом!
Помогите плиз
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Запрос к 2-м БД

Сообщение ElisDN »

igor3310 писал(а): 2017.12.31, 15:04 Но та идет подключение к 1-й БД, как правильно?
Если две БД на одном подключении, то так. Если двумя разными подключениями - то никак.
igor3310
Сообщения: 75
Зарегистрирован: 2015.07.24, 10:33

Re: Запрос к 2-м БД

Сообщение igor3310 »

У меня db и db2
Аватара пользователя
rugabarbo
Сообщения: 1063
Зарегистрирован: 2015.06.21, 16:21
Контактная информация:

Re: Запрос к 2-м БД

Сообщение rugabarbo »

В Yii каждый db-инстанс создаёт свой PDO-объект (с объявленным в конфиге DSN) и работает через него.
А для того, чтобы сделать кросс-db запрос, нужно создавать всего один PDO-объект и работать через него.
Соответственно, с помощью Yii2 вы желаемый запрос никак не сделаете.

Только на чистом PDO. Как-то так:

Код: Выделить всё

$db = new PDO("mysql:host=localhost;dbname=mydbname", "user", "pass");
$res = $db->query("SELECT * FROM `db_А`.`table1`, `db_B`.`table2` WHERE ...");
При этом, базы должны крутиться под одним и тем же mysqld, а указанный в DSN юзер должен с этим логином и паролем (user:pass) иметь все необходимые доступы как к db_A, так и к db_B.
Аватара пользователя
rugabarbo
Сообщения: 1063
Зарегистрирован: 2015.06.21, 16:21
Контактная информация:

Re: Запрос к 2-м БД

Сообщение rugabarbo »

Хотя нет, я наврал. На yii может быть через один компонент db + queryBuilder как-то и сделаете при выполнении всё тех же условий, но через два db-компонента (db/db2) точно нет. То есть до чистого PDO может быть и не придётся скатываться.
igor3310
Сообщения: 75
Зарегистрирован: 2015.07.24, 10:33

Re: Запрос к 2-м БД

Сообщение igor3310 »

А как через db + queryBuilder сосотавить мой запрос?
Аватара пользователя
rugabarbo
Сообщения: 1063
Зарегистрирован: 2015.06.21, 16:21
Контактная информация:

Re: Запрос к 2-м БД

Сообщение rugabarbo »

Для начала так же, как в моём примере с PDO, составляете чистый SELECT и запихиваете его в createCommand. Делаете queryAll, например. То есть для начала пробуйте raw sql в билдере.
igor3310
Сообщения: 75
Зарегистрирован: 2015.07.24, 10:33

Re: Запрос к 2-м БД

Сообщение igor3310 »

Так у Вас на примере YII2
Аватара пользователя
rugabarbo
Сообщения: 1063
Зарегистрирован: 2015.06.21, 16:21
Контактная информация:

Re: Запрос к 2-м БД

Сообщение rugabarbo »

Что именно? В первой версии raw sql тоже есть в билдере. У меня вообще пример на PDO.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Запрос к 2-м БД

Сообщение zelenin »

коллега, заканчивайте тупить. нельзя одновременно прокатиться на двух автомобилях. Нельзя и один запрос сделать через два соединения. Просто пробуйте сделать в вашем yii2 запрос с использованием наименований ваших баз.
Ответить