Собственно понадобилось получать из нескольких таблиц записи, 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.