@GlukFree

Алиасы строки в sql?

Привет!

Есть запрос:

Select * 
FROM calendar_year as cal
LEFT JOIN album as alb ON alb.year = cal.year AND (alb.band_id = 388)
WHERE cal.year BETWEEN 1969 AND 1982


В полученном джойне 2 столбца с одинаковым именем "year", получены из разных таблиц - album и calendar_year

Вопрос:
Как мне задать алиасы для столбцов "year" для уже полученного джойна? Мне бы хотелось вывести количество значений в столбце year с помощью запроса

SELECT COUNT(ooo.year)
FROM
(Select *
FROM calendar_year as cal
LEFT JOIN album as alb ON alb.year = cal.year AND (alb.band_id = 388)
WHERE cal.year BETWEEN 1969 AND 1982) as ooo


Но выдает ошибку "ОШИБКА: неоднозначная ссылка на столбец "year"", что логично, т.к в таблице 2 столбца с одним именем
  • Вопрос задан
  • 848 просмотров
Решения вопроса 1
irishmann
@irishmann
Научись пользоваться дебаггером
Как то так
SELECT 
	COUNT(ooo.year_alb)
FROM
	(
	SELECT
		alb.year AS	year_alb,
		cal.year AS year_cal
	FROM
		calendar_year cal
		LEFT JOIN album alb ON alb.year = cal.year AND (alb.band_id = 388)
	WHERE 
		cal.year BETWEEN 1969 AND 1982
	) ooo


year - название столбца лучше взять в кавычки, `year` - так для MySQL, или так "year" для PostgreSQL
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
tsklab
@tsklab
Здесь отвечаю на вопросы.
Убрать * и перечислить все нужные столбцы в формате таблица.столбец
Ответ написан
LaRN
@LaRN
Senior Developer
вот так например:
select alb.year as year1, cal.year as year2
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы