2015-11-28 1 views
2

У меня есть эти два querysОбъединить два запроса из разных таблиц и отсортировать их по общей колонке?

SELECT consejos.consejo as value, 
          consejos.id, 
          consejos.texto, 
          consejos.votos    
        FROM consejos 
        ORDER BY fecha DESC 

И

SELECT preguntas.pregunta as value, 
          preguntas.id, 
          preguntas.texto, 
          preguntas.votos    
        FROM preguntas 
        ORDER BY fecha DESC 

Есть ли простой способ получить оба результата в одном запросе и сортировать по fecha колонке? и было бы возможно добавить поле к определению, с какой таблицей является строка?

+1

Посмотрите в UNION ALL – Mihai

ответ

1

вы можете использовать union:

SELECT value, id, texto, votos, source_table from (
    SELECT consejos.consejo as value, 
           consejos.id, 
           consejos.texto, 
           consejos.votos, 
           'consejos' as source_table, 
           fecha    
         FROM consejos 
UNION 
    SELECT preguntas.pregunta as value, 
           preguntas.id, 
           preguntas.texto, 
           preguntas.votos, 
           'preguntas' as source_table, 
           fecha        
         FROM preguntas 
) as A ORDER BY fecha DESC 

EDIT: для дополнительного запроса, чтобы добавить столбец, указывающий из какой таблицы это came- можно просто добавить в список столбцов в выбранном 'consejos' as source_table к первый и 'preguntas' as source_table ко второму

второй EDIT (для земляники, это испытание или что-то? я пройти? :)) добавить fecha на внутренние запросы, но не к оберточной один, если вы не хотите его там

+0

@Strawberry - см. мое второе редактирование –

+0

Мне нужно было выбрать 'fecha as ff' в обоих запросах и отсортировать по' ff', потому что не нашел 'fecha', но он работает! :) –

1

Использование UNION ALL

Select * From (
SELECT consejos.consejo as value, 
          consejos.id, 
          consejos.texto, 
          consejos.votos    
        FROM consejos 

UNION ALL 

SELECT preguntas.pregunta as value, 
          preguntas.id, 
          preguntas.texto, 
          preguntas.votos    
        FROM preguntas) t 
    ORDER BY t.fecha DESC 
+1

Почти - но не совсем – Strawberry

+0

@Strawberry вы находите «что-то» в ответах каждого, но где ваше? :П –

0

Попробуйте это:

SELECT consejos.consejo AS value 
    ,consejos.id 
    ,consejos.texto 
    ,consejos.votos 
FROM consejos 
UNION ALL 
SELECT preguntas.pregunta AS value 
    ,preguntas.id 
    ,preguntas.texto 
    ,preguntas.votos 
FROM preguntas 
ORDER BY fecha DESC 
0
select id,texto,votos from ((SELECT consejos.consejo as value, 
          consejos.id as id, 
          consejos.texto as texto , 
          consejos.votos as votos    
        FROM consejos) UNION (SELECT preguntas.pregunta as value, 
          preguntas.id as id, 
          preguntas.texto as texto, 
          preguntas.votos as votos    
        FROM preguntas)) as tb ORDER BY fecha DESC 
Смежные вопросы