2014-10-02 6 views
0

У меня есть система билетов, которую я настроил для нескольких веб-сайтов. Каждая таблица в базе данных одинакова на всех сайтах.Запрос из нескольких баз данных

Мой вопрос: как я могу запросить несколько таблиц из каждой базы данных?

Пример:

  • У меня есть 5 билетов на открытые у собак базы
  • У меня есть 2 билета открытые в кошках базы данных

Мне нужно написать запрос, который сообщит мне, что это последний поданный билет.

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

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

$database_1 = 'dogs'; 
$database_2 = 'cats'; 

$recent = DB::getInstance()->query(" 
SELECT `st_id`,`dates`,`complex` FROM {$database_1}.`support_ticket` WHERE `status` = 'OPEN' ORDER BY `dates` DESC LIMIT 1 
UNION ALL 
SELECT `st_id`,`dates`,`complex` FROM {$database_2}.`support_ticket` WHERE `status` = 'OPEN' ORDER BY `dates` DESC LIMIT 1 "); 

foreach($recent->results() as $r): 
?> 
<div class="box-bottom">Most Recent: <?php echo escape($r->complex); ?> - 
<?php echo escape (date("F d, Y - h:i a", strtotime ($r->dates))); ?></div> 
<?php endforeach ?> 

Любая помощь будет принята с благодарностью.

+0

Never-ум это работает '' ВЫБРАТЬ st_id', '' dates', complex' FROM {$ database_1} .'support_ticket' UNION ALL ВЫБРАТЬ 'st_id ',' date', 'complex' FROM {$ database_2}. 'upport_ticket' WHERE' status' = 'OPEN' ORDER BY 'date' DESC LIMIT 1"); ' – echo

ответ

1

Просто используйте один ORDER BY заявление

SELECT `st_id`,`dates`,`complex` 
FROM {$database_1}.`support_ticket` 
WHERE `status` = 'OPEN' 
UNION ALL 
SELECT `st_id`,`dates`,`complex` 
FROM {$database_2}.`support_ticket` 
WHERE `status` = 'OPEN' 
ORDER BY `dates` DESC LIMIT 1 
+1

Да, это работает, просто попробовал это после того, как я закончил задание вопроса. Спасибо за помощь, хотя! =) – echo

+0

знаете ли вы, что лучше выбрать из каждой таблицы. Это не работает, но что-то вроде этого: 'ВЫБРАТЬ любой FRO M dogs AND cats.support_ticket .... и т. Д. – echo

+1

На самом деле начал писать запрос JOIN, но это не имеет смысла. Это лучший способ сделать это, поскольку теперь у вас есть это без реорганизации базы данных, чтобы иметь все билеты поддержки в одной базе данных, отличающиеся колонкой, содержащей «кошек» или «собак». Вероятно, именно так я бы это сделал при разработке базы данных. –