2013-08-24 5 views
2

Предположим, у меня есть две таблицы: акции и последующие. В настоящее время у меня есть запрос, который возвращает последние акции, упорядоченные по дате, ограниченным 25 результатами. То, что я хотел бы сделать, - это запрос от обоих и долей, возвращая последние 25 результатов. Однако я не уверен, как это сделать.MySQL Объедините результаты запроса из нескольких таблиц

Мой запрос на акции, как так:

select s.id, s.name, s.sharer, s.type from shares s where id = :id order by s.date desc limit 0,25 

Мой запрос для последователей, как так:

select f.follower, f.following, f.type from followers f where f.following = :id order by f.date desc limit 0,25 

Как совместить эти, так что если он выбирает из таблицы последователей , он принимает только последователя, следующего и типа, и если он выбирает из таблицы разделов, он принимает только идентификатор, имя и т. д.? Возможно ли это?

+0

Связаны ли эти две таблицы? –

ответ

3

Я думаю что вы ищете союз ...

select id, name, sharer, type from (  
    (select s.id as id, 
      s.name as name, 
      s.sharer as sharer, 
      s.type as type, 
      s.date as date 
     from shares s 
     where id = :id order by s.date desc) 
     UNION 
    (select f.follower as id, 
      f.following as name, 
      f.following as sharer, 
      f.type as type, 
      f.date as date 
     from followers f 
     where f.following = :id order by f.date desc)) 
     order by date desc limit 0,25; 

Вам может понадобиться настроить псевдоним по мере необходимости.

+0

Два внутренних запроса должны сочетаться, прибегать к услугам и ограничиваться верхней двадцатью пятью. – zevra0

+0

Вы правы. Я удаляю свой комментарий. –

+0

, если вы уверены, что нет пересечения между результатами, используйте UNION ALL. Благодаря этому вы сможете повысить производительность запросов. – Pastor

Смежные вопросы