MySQL Forums
Forum List  »  Russian

JOIN: одновременно LEFT и RIGHT (аналог FULL JOIN)
Posted by: Ivan Xenon
Date: November 11, 2008 04:32AM

Собственно понадобилось получать из нескольких таблиц записи, JOINя их таким образом, что записи может не быть либо в правой таблице (таблицах), либо в левой (левых). Вкратце, задача свелась к получению из

CREATE TABLE t1 (i INT, j char(1));
CREATE TABLE t2 (i INT, k char(1));

INSERT INTO t1 VALUES(1,'x');
INSERT INTO t1 VALUES(2,'y');
INSERT INTO t2 VALUES(2,'z');
INSERT INTO t2 VALUES(3,'w');
следующего result set:
1 x NULL
2 y z
3 NULL w
Hint: SELECT * FROM t1 NATURAL LEFT JOIN t2; получает ПОЧТИ такой, но вся соль в том что он *LEFT* JOIN. Соотвественно RIGHT JOIN получит вторую половину.
Если перефразировать, то нужно эмулировать FULL JOIN, которого в MySQL нет.

Другой вариант - приJOINить ещё одну "таблицу", в которой перечислены все возможные индексы в определённом интервале, но опять же - записей в самой таблице может и не быть, в связи с этим вопрос номер два.
Как одним простым SELECT`ом, без таблиц вообще получить диапазон дат, скажем с 1 по 30 ноября.
2008-11-01
2008-11-02
2008-11-03
....
2008-11-30



Edited 1 time(s). Last edit at 11/11/2008 05:20AM by Ivan Xenon.

Options: ReplyQuote


Subject
Views
Written By
Posted
JOIN: одновременно LEFT и RIGHT (аналог FULL JOIN)
10219
November 11, 2008 04:32AM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.