MySQL UNION ALL для сетки ExtJS - нужен столбец уникального идентификатора


Я использую сетку ExtJS 3.0 и генерирую данные из PHP с использованием MySQL. Я настроил свой idProperty сетки в столбце id. Проблема в том, что у меня есть 2 таблицы для входящих счетов-фактур и одна для исходящих счетов-фактур с одинаковыми столбцами. Я хочу объединить ВСЕ эти 2 таблицы и показать результат в сетке ExtJS. Проблема в том, что из этих таблиц выходят некоторые повторяющиеся идентификаторы, из-за чего сетка ExtJS пропускает их строки. Я знаю, что могу сделать простой СОЮЗ, чтобы пропустить дубликаты, но мне нужна каждая строка в сетке, даже если у них один и тот же идентификатор. На самом деле нет четких данных, к которым я мог бы относиться.

Есть идеи? Спасибо.

Author: Manny Calavera, 2011-04-06

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.

 5
Author: Stefan Gehrig, 2011-04-06 15:32:05

Я считаю, что id является необязательным в ExtJS. Если вы оставите это, сетка вычислит свой собственный уникальный идентификатор для каждой строки.

 1
Author: JW., 2011-04-05 22:13:56