2016-03-21 15 views
0

Ich muss zwei Subselects zu einem sortierbaren Ergebnis kombinieren. Die Daten stammen von zwei Datenbanken auf demselben Server.Kombinieren Sie zwei Subselect über verschiedene Datenbanken ohne Reference

So zum Beispiel habe ich diese zwei Abfragen:

Abfrage # 1

SELECT foo.someId AS id, foo.name AS title, foo.tstmp AS timestamp, 'db1' as db 
FROM `db1`.`table_foo` AS `foo` 
ORDER BY foo.tstmp DESC 

Abfrage # 2

SELECT bar.that_id AS id, bar.object_title AS title, bar.timestamp AS timestamp, 'db2' as db 
FROM `db2`.`bar` AS `bar` 
ORDER BY bar.timestamp DESC 

Jetzt möchte ich irgendwie diese beiden wählt beitreten in ein Ergebnis und verwenden Sie LIMIT mit einem Offset, um über das Ergebnis zu paginieren.

Ist das überhaupt möglich? Es gibt keine Tabelle, über die die beiden Subselects verknüpft werden.

Antwort

1

Try UNION ALL mit diesen:

(
SELECT foo.someId AS id, foo.name AS title, foo.tstmp AS timestamp, 'db1' as db 
FROM `db1`.`table_foo` AS `foo` 
) UNION All (
SELECT bar.that_id AS id, bar.object_title AS title, bar.timestamp AS timestamp, 'db2' as db 
FROM `db2`.`bar` AS `bar` 
) 
ORDER BY 3 DESC 
LIMIT N,M 

Ohne die optionale ALL, doppelte Einträge würden abgezogen werden. Sie brauchen es möglicherweise nicht, wenn Sie unsere Duplikate beherrschen können.