Как получить ВСЕ результаты из обеих таблиц A и B?(внешнего объединения не существует?) - PullRequest
3 голосов
/ 10 августа 2011

Самый простой способ объяснить это на примере:

mysql> select * from table_a left join table_b on col_a=col_b;
+-------+-------+
| col_a | col_b |
+-------+-------+
|     1 |  NULL |
|     2 |  NULL |
|     3 |     3 |
|     4 |     4 |
+-------+-------+

mysql> select * from table_a right join table_b on col_a=col_b;
+-------+-------+
| col_a | col_b |
+-------+-------+
|     3 |     3 |
|     4 |     4 |
|  NULL |     5 |
|  NULL |     6 |
+-------+-------+

Но как мне это получить?

mysql> select * from table_a ???? table_b on col_a=col_b;
+-------+-------+
| col_a | col_b |
+-------+-------+
|     1 |  NULL |
|     2 |  NULL |
|     3 |     3 |
|     4 |     4 |
|  NULL |     5 |
|  NULL |     6 |
+-------+-------+

Структура для @Abe:

CREATE TABLE IF NOT EXISTS `table_a` (
  `col_a` int(11) NOT NULL,
  PRIMARY KEY (`col_a`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;


INSERT INTO `table_a` (`col_a`) VALUES
(1),
(2),
(3),
(4);

CREATE TABLE IF NOT EXISTS `table_b` (
  `col_b` int(11) NOT NULL,
  PRIMARY KEY (`col_b`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;


INSERT INTO `table_b` (`col_b`) VALUES
(3),
(4),
(5),
(6);

Ответы [ 2 ]

5 голосов
/ 10 августа 2011

Поскольку в MySQL нет опции FULL OUTER JOIN, я думаю, вы ограничены использованием UNION:

select * from table_a left join table_b on col_a=col_b
UNION 
select * from table_a right join table_b on col_a=col_b
3 голосов
/ 10 августа 2011

Эта статья предоставляет несколько способов моделирования полного внешнего объединения с MySQL.

http://www.xaprb.com/blog/2006/05/26/how-to-write-full-outer-join-in-mysql/

надеюсь, что это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...