MySQL: возможно ли объединить результаты GROUP-BY с двумя SELECT?

У меня есть два отдельных оператора SELECT, которые оба представляют собой GROUP-BY 'd, например:

SELECT x, y, z FROM a GROUP BY x
SELECT x, n, o FROM b GROUP BY x

Я очень хотел бы объединить эти два SELECT вместе, чтобы объединить их столбцы, такие как:

SELECT x as x1, y, z FROM a GROUP BY x 
LEFT JOIN (
  SELECT x as x2, n, o FROM b GROUP BY x)
ON x1=x2;

Это возможно? Я спрашиваю, потому что MySQL жалуется

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LEFT JOIN SELECT x as x2

Если это возможно, есть мысли о том, что не так с моим синтаксисом?

Спасибо большое!

Ответы на вопрос(3)

Есть несколько способов достичь этого:

Best: Join the tables BEFORE grouping like so:
SELECT a.x, y, z, n, o
  FROM a INNER JOIN b ON a.x = b.x
 GROUP BY a.x, b.x;
Select from the two queries as sub-queries like so:
SELECT *
FROM       (SELECT x, y, z FROM a GROUP BY x) AS a
INNER JOIN (SELECT x, n, o FROM b GROUP BY x) AS b
        ON a.x = b.x;
 17 июн. 2009 г., 07:20
Я думаю (2) - это то, что он ищет.
 DarkSquid17 июн. 2009 г., 07:59
+1 действительно, # 2 это именно то, что я хотел - принял предыдущий ответ, как это было первым ... но большое спасибо!
Решение Вопроса

Это работает

select * from (
    (select 1 a,2 b,3 c) t1 left join (select null a,2 b,5 c) t2 on (t1.b=t2.b)
);

С другой стороны,

select * from (
    (select 1 a,2 b,3 c) t1 left join (select null a,2 b,5 c) t2 using (b)
);

Оба результата в

+---+---+---+------+---+---+
| a | b | c | a    | b | c |
+---+---+---+------+---+---+
| 1 | 2 | 3 | NULL | 2 | 5 |
+---+---+---+------+---+---+
1 row in set (0.00 sec)
 DarkSquid17 июн. 2009 г., 07:59
Именно то, что я хотел - спасибо!

Вы также можете использовать этот запрос:
SELECT a.x, a.y, a.z, b.x, b.o, b.n FROM a, (SELECT x, n, o FROM b GROUP BY x) as b WHERE a.x = b.x GROUP BY a.x;

Ваш ответ на вопрос