powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как написать такой запрос?
2 сообщений из 2, страница 1 из 1
Как написать такой запрос?
    #40109246
romaro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть 3 таблицы:

Доступные языки:
Код: sql
1.
2.
3.
4.
5.
6.
CREATE TABLE site.lang (
	id serial4 NOT NULL,
	title varchar(50) NOT NULL,
	"key" varchar(2) NOT NULL,
	CONSTRAINT lang_pk PRIMARY KEY (id)
);



Темы обращений:
Код: sql
1.
2.
3.
4.
5.
6.
7.
CREATE TABLE site.feedback_theme (
	id serial4 NOT NULL,
	state int4 NOT NULL DEFAULT 1,
	title varchar(255) NOT NULL,
	priority int4 NULL,
	CONSTRAINT feedback_theme_pk PRIMARY KEY (id)
);



Переводы этих тем:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
CREATE TABLE site.feedback_theme_lang (
	id serial4 NOT NULL,
	lang_id int4 NOT NULL,
	theme_id int4 NOT NULL,
	"translate" varchar NOT NULL,
	CONSTRAINT feedback_theme_lang_pk PRIMARY KEY (id),
	CONSTRAINT feedback_theme_lang_uk UNIQUE (lang_id, theme_id)
);


-- site.feedback_theme_lang foreign keys

ALTER TABLE site.feedback_theme_lang ADD CONSTRAINT feedback_theme_lang_fk FOREIGN KEY (lang_id) REFERENCES site.lang(id);
ALTER TABLE site.feedback_theme_lang ADD CONSTRAINT feedback_theme_lang_fk2 FOREIGN KEY (theme_id) REFERENCES site.feedback_theme(id);



Для некоторых тем могут отсутствовать переводы.
Как получить результат в виде таблицы из двух колонок feedback_theme_id, translate , которая будет содержать список всех тем из таблицы site.feedback_theme но в случае, если для такой темы отстуствует перевод в site.feedback_theme_lang, то следует показать в качестве дефолта значение из колонки feedback_theme.title

Пока что хватило ума только на то, чтобы получить все нужные варианты переводов (идеальное состояние таблицы feedback_theme_lang):
Код: sql
1.
2.
3.
4.
SELECT ft.id, ft.title, l.KEY
FROM site.feedback_theme ft 
CROSS JOIN site.lang l
;
...
Рейтинг: 0 / 0
Как написать такой запрос?
    #40109465
Ы2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
romaro, вам нужен дополнительный join на таблицу с переводами и для вывода — coalesce(перевод, строка_по-умолчанию)
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как написать такой запрос?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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