Соединение запросов postgresql

1. user1619761 05.02.24 10:17 Сейчас в теме
Добрый день. Помогите, пожалуйста, разобраться, что не так делаю. Создаю временную таблицу с названиями месяцев, соединяю с основной таблицей по названию месяца, и пустой результат запроса получается. В документации читал, функция to_char(timestamp, text) возвращает результат с типом текст, во временной таблице так же тип текст присваиваю.
CREATE TEMPORARY TABLE templTableMonths(
 	id SERIAL PRIMARY KEY, 
   	name text NOT NULL
);
INS ERT INTO templTableMonths(name) 
VALUES ('Январь'),
('February');

--sele ct * from templTableMonths;

sel ect
	 Date(myTable.date) "Дата"
fr om my_table myTable
inner join templTableMonthstemplTableMonths
on
to_char(myTable.date, 'Month') = templTableMonths.name
group by
 	Date(myTable.date)
Показать
По теме из базы знаний
Найденные решения
8. user1326147 05.02.24 12:13 Сейчас в теме
(1)

-- create
CRE ATE   TABLE EMPLOYEE (
  empId INTEGER PRIMARY KEY,
  name TEXT NOT NULL,
  dept TEXT NOT NULL,
  mydate date
);

-- insert
INS ERT IN TO EMPLOYEE VALUES (0001, 'Clark', 'Sales','2022-08-25');
INS ERT IN TO EMPLOYEE VALUES (0002, 'Dave', 'Accounting','2022-09-11');
INS ERT IN TO EMPLOYEE VALUES (0003, 'Ava', 'Sales', '2022-10-21');
INS ERT IN TO EMPLOYEE VALUES (0004, 'Clark', 'Sales','2022-02-25');
INS ERT IN TO EMPLOYEE VALUES (0005, 'Dave', 'Accounting','2022-05-11');
INS ERT IN TO EMPLOYEE VALUES (0006, 'Ava', 'Sales', '2022-12-21');


-- fetch 


CREATE TEMPORARY TABLE months (
    id SERIAL PRIMARY KEY, 
    month_name TEXT
);

INS ERT IN TO months (month_name)
VALUES
    ('январь'),
    ('февраль'),
	('Март'),
	('Апрель'),
	('Май'),
	('Июнь'),
	('Июль'),
	('Август'),
	('Сентябрь'),
	('Октябрь'),
	('Ноябрь'),
    ('декабрь');
    
SEL ECT name,dept,date_part('month', mydate) as month ,t2.month_name
FR OM EMPLOYEE t1 left join months t2 ON t2.id = date_part('month', mydate) ;
Показать

name  |    dept    | month | month_name 
-------+------------+-------+------------
 Clark | Sales      |     2 | февраль
 Dave  | Accounting |     5 | Май
 Clark | Sales      |     8 | Август
 Dave  | Accounting |     9 | Сентябрь
 Ava   | Sales      |    10 | Октябрь
 Ava   | Sales      |    12 | декабрь
user1619761; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. starik-2005 3061 05.02.24 10:31 Сейчас в теме
А что в "to_char(myTable.date, 'Month')"? Чета я сомневаюсь, что там Январь и Февраль, а не Jan/Feb...
3. user1619761 05.02.24 10:36 Сейчас в теме
(2)
А что в "to_char(myTable.date, 'Month')"?
Прикрепленные файлы:
4. starik-2005 3061 05.02.24 10:40 Сейчас в теме
(3)
Прикрепленные файлы:
Ты стал умнее?
5. user1619761 05.02.24 10:52 Сейчас в теме
(4)ты спросил, что в
(2)
"to_char(myTable.date, 'Month')"
, на скрине значения, которые у меня выводятся по этому запросу. Январь, ок, но по полю February должно было соединиться, так как во временной таблице у меня это значение так же присутствует. Или я ошибаюсь? А сарказма я совсем не понял.
6. starik-2005 3061 05.02.24 11:52 Сейчас в теме
(5) Ну так соедини по истине, выведи оба поля, и выведи, равны ли они.
user1619761; +1 Ответить
7. user1619761 05.02.24 12:05 Сейчас в теме
8. user1326147 05.02.24 12:13 Сейчас в теме
(1)

-- create
CRE ATE   TABLE EMPLOYEE (
  empId INTEGER PRIMARY KEY,
  name TEXT NOT NULL,
  dept TEXT NOT NULL,
  mydate date
);

-- insert
INS ERT IN TO EMPLOYEE VALUES (0001, 'Clark', 'Sales','2022-08-25');
INS ERT IN TO EMPLOYEE VALUES (0002, 'Dave', 'Accounting','2022-09-11');
INS ERT IN TO EMPLOYEE VALUES (0003, 'Ava', 'Sales', '2022-10-21');
INS ERT IN TO EMPLOYEE VALUES (0004, 'Clark', 'Sales','2022-02-25');
INS ERT IN TO EMPLOYEE VALUES (0005, 'Dave', 'Accounting','2022-05-11');
INS ERT IN TO EMPLOYEE VALUES (0006, 'Ava', 'Sales', '2022-12-21');


-- fetch 


CREATE TEMPORARY TABLE months (
    id SERIAL PRIMARY KEY, 
    month_name TEXT
);

INS ERT IN TO months (month_name)
VALUES
    ('январь'),
    ('февраль'),
	('Март'),
	('Апрель'),
	('Май'),
	('Июнь'),
	('Июль'),
	('Август'),
	('Сентябрь'),
	('Октябрь'),
	('Ноябрь'),
    ('декабрь');
    
SEL ECT name,dept,date_part('month', mydate) as month ,t2.month_name
FR OM EMPLOYEE t1 left join months t2 ON t2.id = date_part('month', mydate) ;
Показать

name  |    dept    | month | month_name 
-------+------------+-------+------------
 Clark | Sales      |     2 | февраль
 Dave  | Accounting |     5 | Май
 Clark | Sales      |     8 | Август
 Dave  | Accounting |     9 | Сентябрь
 Ava   | Sales      |    10 | Октябрь
 Ava   | Sales      |    12 | декабрь
user1619761; +1 Ответить
10. user1619761 05.02.24 13:12 Сейчас в теме
9. Said-We 05.02.24 12:52 Сейчас в теме
(1) Зачем соединять по названию месяца, если Вы и так получаете из даты название месяца?
С учетом:
https://forum.infostart.ru/forum9/topic309204/

Что вообще надо сделать?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот