Mysql подзапрос с условным левым внешним соединением - PullRequest
2 голосов
/ 06 июля 2010

Попытка использовать параметр из внешнего запроса в предложении FROM подзапроса.

tbl1:
| id | val1 | str1 |
| 1  | 12   | sbc  |
| 2  | 22   | sds  |

tbl2:
| id | val1 | str1 |
| 1  | 1    | cp   |

Попытка написать следующий запрос:

select * from
    tbl1 t, (select * from tbl2 where t.id = tbl2.id and tbl2.val1 = 1) tb12;

Ожидаемый результат:

| id | val1 | str1 | id   | val1 | str1 |
| 1  | 12   | sbc  | 1    | 1    | cp   |
| 2  | 22   | sds  | null | null | null |

Все же не получается с ошибкой:

/* SQL Error (1054): Unknown column 't.id' in 'where clause' */

Что я здесь не так делаю?

Ответы [ 3 ]

2 голосов
/ 06 июля 2010
SELECT  *
FROM    tbl1 t
LEFT JOIN
        tbl2 t2
ON      t2.id = t.id
        AND t2.val1 = 1
2 голосов
/ 06 июля 2010

Есть ли причина не использовать простое старое левое соединение, как это:

select * from tbl1 t1 left join tbl2 t2 on t1.id = t2.id;
0 голосов
/ 25 мая 2012
 SELECT * tbl1 UNION select * from tbl2;

даст тот же результат

...