особенности left join

борис

Новичок
особенности left join

у меня стоит задача соединить 2 таблицы по следующему принципу

первая таблица:
|t1_id |t1_val |
| 1 | a |
| 2 | b |
| 3 | c |
| 4 | d |

вторая таблица:
|t2_id |t2_val|
| 1 | A |
| 2 | B |

должно получиться:
|t1_id |t1_val | t2_val |
| 1 | a | A |
| 2 | b | B |
| 3 | c | 0 |
| 4 | d | 0 |

вместо нулей, может быть все что угодно, это не принципиально..
когда я делаю SELECT * FROM t1 LEFT JOIN t2 ON t1.t1_id=t2.t2_id то возвращается только первые 2 строчки, что и понятно, т.к. должно выполняться условие t1.t1_id=t2.t2_id.

Как их лучше соединить, чтобы получить не пересечение, а полное множество значений из t1 и + подсоединенную t2? Никто не сталкивался с подобным?
 

Сергей123

Новичок
>> возвращается только первые 2 строчки
Вы нас обманываете? Или что-то не договариваете?
 

борис

Новичок
:) да, у меня много тайн и сюрпризов в кармане, но они к делу не относятся.
 

Сергей123

Новичок
Уточню...

Последовательность запросов, которая у меня, например, как и должна, возвращает нужные вам "четыре строки".

[sql]
create table t1 (
t1_id int not null,
t1_val char(1)
);

insert t1 values (1, 'a'), (2, 'b'), (3, 'c'), (4, 'd');

create table t2 (
t2_id int not null,
t2_val char(1)
);

insert t2 values (1, 'A'), (2, 'B');

SELECT * FROM t1 LEFT JOIN t2 ON t1.t1_id=t2.t2_id;
[/sql]
 

борис

Новичок
да, точно, вы правы, мой случай был сложнее и я его слишком сильно упростил..
А 2 строчки возвращались из-за одного лишнего условия на t2 в WHERE, которое надо было перенести в ON.

Вопрос решено, спасибо
 
Сверху