MySQL UNION ALL для сетки ExtJS - нужен столбец уникального идентификатора
Я использую сетку ExtJS 3.0 и генерирую данные из PHP с использованием MySQL. Я настроил свой idProperty
сетки в столбце id
. Проблема в том, что у меня есть 2 таблицы для входящих счетов-фактур и одна для исходящих счетов-фактур с одинаковыми столбцами. Я хочу объединить ВСЕ эти 2 таблицы и показать результат в сетке ExtJS. Проблема в том, что из этих таблиц выходят некоторые повторяющиеся идентификаторы, из-за чего сетка ExtJS пропускает их строки. Я знаю, что могу сделать простой СОЮЗ, чтобы пропустить дубликаты, но мне нужна каждая строка в сетке, даже если у них один и тот же идентификатор. На самом деле нет четких данных, к которым я мог бы относиться.
Есть идеи? Спасибо.
2 answers
Почему бы не добавить некоторый префикс в столбец идентификатора при SELECT
вводе данных:
(SELECT CONCAT('in-', id) AS id, ... FROM in_table)
UNION ALL
(SELECT CONCAT('out-', id) AS id, ... FROM out_table)
Вам нужно будет убедиться, что определение поля для поля id
в вашей конфигурации считывателя имеет правильный тип (auto
или string
в этом случае).
Если впоследствии вам понадобится реальный id
, измените запрос, чтобы также выбрать реальный id
:
(SELECT CONCAT('in-', id) AS gid, id, 'in' AS type ... FROM in_table)
UNION ALL
(SELECT CONCAT('out-', id) AS gid, id, 'out' AS type, ... FROM out_table)
Ваш idProperty
теперь будет gid
.
Я считаю, что id
является необязательным в ExtJS. Если вы оставите это, сетка вычислит свой собственный уникальный идентификатор для каждой строки.