У меня есть три таблицы, которые структурированы следующим образом:
results:
id | url_id
foo
id | url_id | url
bar
id | url_id | url
Я хочу иметь возможность выбрать URL в одном запросе, зная, что он может быть в любой таблице.
Мой план состоял в том, чтобы сделать LEFT JOIN
для обеих таблиц и затем вернуть что-то вроде IFNULL(foo.url, bar.url) as url
.
. Важно, чтобы результат назывался url
.
Однако яне могу использовать это же имя столбца url
в моем предложении WHERE
из-за неоднозначности.Вот мой запрос и сообщение об ошибке, которое я получаю:
SELECT r.id,
COALESCE(foo.url, bar.url) as url
FROM results r
LEFT JOIN foo USING (url_id)
LEFT JOIN bar USING (url_id)
WHERE url IS NOT NULL;
Column 'url' in where clause is ambiguous
Было бы довольно тривиально выбрать столбец под другим именем и переименовать его в моем коде, нобыло бы лучше сделать это в SQL.
Вот SQL Fiddle: http://sqlfiddle.com/#!9/32abc6/4
Cheers