powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как приравнять ID двух столбцов в одной таблицы к ID одного столбца в другой таблице?
7 сообщений из 7, страница 1 из 1
Как приравнять ID двух столбцов в одной таблицы к ID одного столбца в другой таблице?
    #39966560
DeLipFin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день
есть запрос, суть в том что я объединил ticket.user_id c users.id. Вывожу столбец ticket.user_id и приравниваю к id соответствующие имена с фамилией
Код: plsql
1.
case when ticket.user_id=(users.id) then (users.first_name || ' ' || users.last_name) end as Владелец,



Но нужно добавить еще столбец в результат запроса ticket.responsible_user_id. Сделал аналогично с выше кодом
Код: plsql
1.
case when ticket.responsible_user_id=(users.id) then (users.first_name || ' ' || users.last_name) end as Ответственный,



Но результат выходит такой: если владелец и ответственный соответствуют то в обоих случаях пишется имя и фамилия, а если же
они разные то он пишет [null] в любом столбце, пример во вложении.

Пришел к выводу это связано из-за того что я связал ticket.user_id c users.id, а ticket.responsible_user_id c users.id не связал.
Как можно приравнять users.id с ticket.user_id и ticket.responsible_user_id

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
SELECT ticket.tn AS Номер_заявки, ticket_type.name as Тип, queue.name as Очередь, service.name as Сервис,
split_part(article_data_mime.a_from,'"', 2) as Клиент, article_data_mime.a_subject AS Заголовок, article_data_mime.a_body AS Описание,
ticket_priority.name as Приоритет, ticket_state.name as Статус, qFields.sIPADDR as IP, qFields.sPhone as Телефон, qFields.sFilial as Филиал,
case when ticket.user_id=(users.id) then (users.first_name || ' ' || users.last_name) end as Владелец,
case when ticket.responsible_user_id=(users.id) then (users.first_name || ' ' || users.last_name) end as Ответственный,
ticket.create_time as Время_создания, ticket.change_time as Время_последнего_изменения

FROM article_data_mime
JOIN article 			ON (article_data_mime.article_id=article.id AND (article_data_mime.a_to in ('1я линия техподдержки', 'Raw', 'Junk', 'Misc', '2я линия', '2я линия::Телеком', '2я линия::ПК ПВД', '2я линия::АИС Мои документы', '2я линия::АИС ЕЦУ', '3я линия', '3я линия::АИС Мои документы', '2я линия::ИБ', '2я линия::СКУД', '2я линия::Видеонаблюдение', 'Кадровый учет', '2я линия::ЭО', 'Монтаж', 'Претензионная работа', 'Кадастровые услуги', 'Кадастровые услуги::Межевание земельных участков', 'Кадастровые услуги::Изготовление технического  плана', 'Кадастровые услуги::Постановка на учет земельного участка и объекта', 'Запрос на выпуск ЭЦП', 'Запрос на выпуск ЭЦП::Готовые к выпуску ЭЦП', '1я линия техподдержки::Рассмотренные', '2я линия::АИС Мои документы::Настройка окон', '2я линия::Сбербанк', '2я линия::АИС Мои документы::Согласование с МОД. Изменение статистики')))
JOIN ticket 			ON (article.ticket_id=ticket.id and (ticket.create_time between '2020-06-05 00:00:00' and '2020-06-05 24:00:00'))
JOIN users 				ON (ticket.user_id=users.id)
JOIN service 			ON (ticket.service_id=service.id)
JOIN ticket_state		ON (ticket.ticket_state_id=ticket_state.id)
JOIN ticket_priority	ON (ticket.ticket_priority_id=ticket_priority.id)
JOIN queue 				ON (ticket.queue_id=queue.id)
JOIN ticket_type		ON (ticket.type_id=ticket_type.id)
					   	INNER JOIN LATERAL
					   
  (SELECT dynamic_field_value.Object_id,
          max(CASE WHEN field_id = 11 THEN value_Text END) sIPADDR,
          max(CASE WHEN field_id = 4 THEN value_Text END) sPhone,
          max(CASE WHEN field_id = 3 THEN (case value_Text 
when '01' then 'Центральный офис'		when '02' then 'Интернациональная'			when '03' then 'ТЦ Башкортостан'	when '04' then 'Бизнес зал 50 лет СССР'
when '05' then 'Инорс'					when '06' then 'Сипайлово'					when '07' then 'Дема'				when '08' then 'ХБК'
when '09' then 'Рыльского'				when '10' then 'Аркада'						when '11' then 'Агидель'			when '12' then 'Баймак'
when '13' then 'Бирск'					when '14' then 'Благовещенск'				when '15' then 'Давлеканово'		when '16' then 'Дюртюли'
when '17' then 'Стерлитамак Мира'		when '18' then 'Стерлитамак'				when '19' then 'Учалы'				when '20' then 'Янаул'
when '21' then 'Межгорье'				when '22' then 'Приютово'					when '23' then 'Чишмы'				when '24' then 'Акъяр'
when '25' then 'Архангельское'			when '26' then 'Аскарово'					when '27' then 'Аскино'				when '28' then 'Бакалы'
when '29' then 'Бижбуляк'				when '30' then 'Большеустьикинское'			when '31' then 'Буздяк'				when '32' then 'Бураево'
when '33' then 'Верхнеяркеево'			when '34' then 'Верхние Киги'				when '35' then 'Верхние Татышлы'	when '36' then 'Ермекеево'
when '37' then 'Ермолаево'				when '38' then 'Зилаир'						when '39' then 'Иглино'				when '40' then 'Исянгулово'
when '41' then 'Калтасы'				when '42' then 'Караидель'					when '43' then 'Кармаскалы'			when '44' then 'Киргиз-Мияки'
when '45' then 'Красная Горка'			when '46' then 'Красноусольский'			when '47' then 'Кушнаренково'		when '48' then 'Малояз'
when '49' then 'Мишкино'				when '50' then 'Мраково'					when '51' then 'Николо-Березовка'	when '52' then 'Новобелокатай'
when '53' then 'Раевский'				when '54' then 'Старобалтачево'				when '55' then 'Старосубхангулово'	when '56' then 'Стерлибашево'
when '57' then 'Толбазы'				when '58' then 'Федоровка'					when '59' then 'Чекмагуш'			when '60' then 'Шаран'
when '61' then 'Языково'				when '62' then 'Белебей'					when '63' then 'Белорецк'			when '64' then 'Ишимбай'
when '65' then 'Кумертау'				when '66' then 'Мелеуз'						when '67' then 'Нефтекамск'			when '68' then 'Октябрьский'
when '69' then 'Салават'				when '70' then 'Сибай'						when '71' then 'Филиал Стерлитамак'	when '72' then 'Туймазы'
when '73' then 'Месягутово'				when '74' then 'Мир'						when '75' then 'Миграционный центр'	when '77' then 'Шакша'
when '78' then 'Октябрьский Горького'	when '82' then 'Нефтекамск Социалистическая'when '84' then 'Бизнес зал Мира 14' end) END) sFilial 
   FROM dynamic_field_value
   WHERE dynamic_field_value.Object_id = ticket.id
     AND field_id IN (11, 4, 3)
  
GROUP BY dynamic_field_value.Object_id) qFields ON qFields.Object_id = ticket.id
Order by 1
...
Рейтинг: 0 / 0
Как приравнять ID двух столбцов в одной таблицы к ID одного столбца в другой таблице?
    #39966569
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeLipFin,

учите sql
просто еще один join с users нужен по ticket.responsible_user_id
...
Рейтинг: 0 / 0
Как приравнять ID двух столбцов в одной таблицы к ID одного столбца в другой таблице?
    #39966595
DeLipFin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk,

Вас не смущает, что уже была связь с таблицей users и ticket

пытался как бы так сделать вот результат

ERROR: table name "ticket" specified more than once
SQL-состояние: 42712
ERROR: table name "users" specified more than once
SQL-состояние: 42712

и да я тупой монуалы не читаю, учусь на примерах только
...
Рейтинг: 0 / 0
Как приравнять ID двух столбцов в одной таблицы к ID одного столбца в другой таблице?
    #39966604
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeLipFin,

Тут не мануал нужен а тонкий учебник по основам sql.

join users as u1 on ...
join users as u2 on ...
...
Рейтинг: 0 / 0
Как приравнять ID двух столбцов в одной таблицы к ID одного столбца в другой таблице?
    #39966982
DeLipFin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk,

Я дико извиняюсь, но не могли бы на примере таблиц из скриншота написать запрос

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
Select ticket.tn, ticket.title, 
case when ticket.user_id=user.id then (users.first_name || ' ' || users.last_name) end,
case when ticket.responsible_user_id=users.id then (users.first_name || ' ' || users.last_name)

(Ниже я не знаю как написать правильно, написал для удобства, чтобы можно было скопировать и отредактировать )
from ticket
join ......on (users.id=ticket.user_id)
join ......on (user_id=ticket.responsible_user_id)
...
Рейтинг: 0 / 0
Как приравнять ID двух столбцов в одной таблицы к ID одного столбца в другой таблице?
    #39967003
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeLipFin,

Вы хотите чтобы участники форма за свой счет и за свое время вас учили SQL а самому прочесть учебник вам явно лень.
Вам не кажется что это как минимум самонадеянно?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
Select ticket.tn, ticket.title, 
u1.first_name || ' ' || u1.last_name,
u2.first_name || ' ' || u2.last_name

(Ниже я не знаю как написать правильно, написал для удобства, чтобы можно было скопировать и отредактировать )
from ticket
JOIN users AS u1 ON (u1.id=ticket.user_id)
JOIN users AS u2 ON (u2.id=ticket.responsible_user_id)
...
Рейтинг: 0 / 0
Как приравнять ID двух столбцов в одной таблицы к ID одного столбца в другой таблице?
    #39967037
DeLipFin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk,

Спасибо за помощь, все получилось
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как приравнять ID двух столбцов в одной таблицы к ID одного столбца в другой таблице?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]