Как загрузить все переменные из нескольких баз данных одним запросом? - PullRequest
0 голосов
/ 20 мая 2018

У меня есть несколько таблиц, в которых хранится общая переменная.Как получить все переменные из каждой таблицы одним запросом?А как вернуть все переменные как в примере?Это вообще возможно?

$id1 = BDR::selectBySQL("g","SELECT * FROM i1 WHERE ix='".$this->ixx."' LIMIT 1");
foreach($id1 as $id1) 
{
    $id1 = $id1['idz'];

}
$id2 = BDR::selectBySQL("g","SELECT * FROM i2 WHERE ix='".$this->ixx."' LIMIT 1");
foreach($id2 as $id2) 
{
    $id2 = $id2['idxc'];

}
$id3 = BDR::selectBySQL("g","SELECT * FROM i3 WHERE ix='".$this->ixx."' LIMIT 1");
foreach($id3 as $id3) 
{
    $id3 = $id3['idsd'];

}
return ['id2'=>$id1,'id2'=>$id2,'id3'=>$id3];

1 Ответ

0 голосов
/ 20 мая 2018

Если таблица имеет одну и ту же схему (с одинаковым столбцом и соответствующим типом данных), вы можете использовать select union all

  SELECT * FROM i1 WHERE ix='".$this->ixx."' LIMIT 1 
  union all  
  SELECT * FROM i2 WHERE ix='".$this->ixx."' LIMIT 1
  union all 
  SELECT * FROM i3 WHERE ix='".$this->ixx."' LIMIT 1 

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

$idAll = BDR::selectBySQL("g",
    "SELECT * FROM i1 WHERE ix='".$this->ixx."' LIMIT 1 
      union all  
      SELECT * FROM i2 WHERE ix='".$this->ixx."' LIMIT 1
      union all 
      SELECT * FROM i3 WHERE ix='".$this->ixx."' LIMIT 1 ");

foreach($idAll as $row) 
{
    $id[] = $row['idz'];

}

return $id;

. Вы можете проверить содержимое массива $ id, используя var_dump($id);

и, наконец, если таблицы приходят из-за различий.базу данных на том же сервере вы можете использовать имя таблицы explictit, например: db1.i1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...