SQL - Определяющий исходную таблицу от Запроса на объединение

I18N обозначает Интернационализация .

Вкратце: безопасный код I18N означает, что использует некоторую таблицу поиска для текстов на UI. Для этого необходимо поддерживать кодировку неASCII. Это, могло бы казаться, было бы легко, но существуют приблизительно глюки .

18
задан Dan 10 September 2009 в 12:06
поделиться

2 ответа

Должно быть достаточно просто, просто сделайте что-нибудь вроде этого:

$sql = "
SELECT Title, 1 FROM table1
UNION ALL
SELECT Title, 2 FROM table2
UNION ALL
SELECT Title, 3 FROM table3";
14
ответ дан 30 November 2019 в 06:59
поделиться

Просто добавьте константу в свой список столбцов следующим образом:

select 'table1' as table_name, title from table1
union all
select 'table2' as table_name, title from table2
union all
select 'table3' as table_name, title from table3

, что даст вам что-то вроде:

table_name | title
-----------+-----------------------------
table1     | war and peace
table2     | 1984
table3     | terminator salvation

и т. Д.

Это позволяет использовать строковые типы данных, которые, вероятно, упростят преобразование в ссылки (особенно если вы используете значения, которые просто нужно скопировать на вашу страницу, а не искать или преобразовывать) а использование предложения as позволит вам ссылаться на него, как на любой другой столбец (по имени).

Обратите внимание на использование union all - если вы ' убедитесь, что в таблицах не будет повторяющихся строк (что , вероятно, истинно в данном случае, поскольку у вас другое значение table_name для каждой, и я предполагаю, что заголовки уникальны ) объединение union all позволяет избежать бесполезной операции сортировки-удаления-дублирования. Использование union само по себе может привести к ненужной работе.

Если вы хотите удалить дубликаты, просто вернитесь к использованию union .

28
ответ дан 30 November 2019 в 06:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: