full outer join на mysql не держит?

chemax
На сайте с 07.01.2009
Offline
206
2622

надо вытащить все значения с объединением.

cat

id | title

post

id | title | text | catid

надо выбрать все значения из обоих таблиц типа full outer join, при условии что post.catid=cat.id, если например нет категории у поста или в категории нет постов, то NULL.

что то типо, ток на mysql не робит(

        

SELECT
*
FROM
`cat`
full outer join post on cat.id=post.catid
Качественный хостинг, VPS и сервера. (http://ihc.ru/?ref=569)
[umka]
На сайте с 25.05.2008
Offline
456
#1

Мне кажется, только вот такая коряга может решить данную задачу, если я правильно её понял (выбрать категории и посты в них, выбрать категории без постов, выбрать посты без категорий)

SELECT * FROM `cat` LEFT JOIN `post` ON (post.catid=cat.id) UNION (SELECT * FROM `cat` RIGHT JOIN `post` ON (cat.id=post.catid))

Лог в помощь!
chemax
На сайте с 07.01.2009
Offline
206
#2
'[umka:
;7751659']Мне кажется, только вот такая коряга может решить данную задачу, если я правильно её понял (выбрать категории и посты в них, выбрать категории без постов, выбрать посты без категорий)

SELECT * FROM `cat` LEFT JOIN `post` ON (post.catid=cat.id) UNION (SELECT * FROM `cat` RIGHT JOIN `post` ON (cat.id=post.catid))

не робит) а идею правильно поняли)

[umka]
На сайте с 25.05.2008
Offline
456
#3

А у меня робит :)

CREATE TABLE IF NOT EXISTS `cat` (

`id` int(11) NOT NULL,
`title` varchar(255) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT INTO `cat` (`id`, `title`) VALUES
(1, 'Категория с постами'),
(2, 'Категория без постов');

CREATE TABLE IF NOT EXISTS `post` (
`catid` int(11) NOT NULL,
`title` varchar(255) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT INTO `post` (`catid`, `title`) VALUES
(1, 'Первый пост в категории 1'),
(1, 'Второй пост в категории 1'),
(0, 'Пост без категории');

mysql> SELECT * FROM `cat` LEFT JOIN `post` ON (post.catid=cat.id) UNION (SELECT * FROM `cat` RIGHT JOIN `post` ON (cat.id=post.catid));

+------+----------------------------------------+-------+-----------------------------------------------+
| id | title | catid | title |
+------+----------------------------------------+-------+-----------------------------------------------+
| 1 | Категория с постами | 1 | Первый пост в категории 1 |
| 1 | Категория с постами | 1 | Второй пост в категории 1 |
| 2 | Категория без постов | NULL | NULL |
| NULL | NULL | 0 | Пост без категории |
+------+----------------------------------------+-------+-----------------------------------------------+
4 rows in set (0,00 sec)
chemax
На сайте с 07.01.2009
Offline
206
#4

понял, осознал, исправил) спасибо большое)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий