Преобразование MySQL Query для Jquery Datatable - PullRequest
0 голосов
/ 23 октября 2018

Мне нужно выполнить запрос ниже в JQuery Datatable Editor, но синтаксис полностью отличается при использовании Jquery Datatable Editor.Примечание: я удивлен, что нет онлайн-конвертера, поскольку Jquery Datatable очень популярен.

Я хотел использовать вместо этого представление, но не могу использовать подзапрос в представлении.Кто-нибудь может помочь?

SELECT
t1.techid,
t1.techname,
t1.manager,
t1.dispatcher,
t1.cellphone,
t2.SC_SCTechID,
t2.BCARNA,
t2.SC_CallStatus,
t2.Serial_ID,
t2.Age,
t2.SC_CallComment,
t2.SC_CallTimestamp,
COALESCE(t3.num_tickets, 0) AS num_tickets
FROM serviceteam t1
LEFT JOIN ato_openservicecalls t2
    ON t1.techid = t2.SC_SCTechID AND t2.SC_CallStatus = 'Dispatch'
LEFT JOIN
(
    SELECT t1.techid, COUNT(t2.Serial_ID) AS num_tickets
    FROM serviceteam t1
    LEFT JOIN ato_openservicecalls t2
        ON t1.techid = t2.SC_SCTechID
    WHERE t2.SC_CallStatus = 'Dispatch'
    GROUP BY
    t1.techid
) t3
 ON t1.techid = t3.techid

Данные:

CREATE TABLE `serviceteam` (
  `id` int,
  `techid` varchar(50),
  `techname` varchar(50),
  `manager` varchar(50),
  `dispatcher` varchar(50),
  `cellphone` varchar(50)
);

CREATE TABLE `ato_openservicecalls` (
  `id` int,
  `SC_SCTechID` varchar(50),
  `SC_CallStatus` varchar(50),
  `BCARNA` varchar(50),
  `Age` varchar(50),
  `SC_CallTimestamp` varchar(50),
  `Serial_ID` varchar(50),
  `SC_CallComment` varchar(50)
);


insert into `serviceteam` VALUES (1, 'tech1', 'name1', 'manager1', 'dispatcher1', 'cellphone1');
insert into `serviceteam` VALUES (2, 'tech2', 'name2', 'manager2', 'dispatcher2', 'cellphone2');
insert into `serviceteam` VALUES (3, 'tech3', 'name3', 'manager3', 'dispatcher3', 'cellphone3');


insert into `ato_openservicecalls` VALUES (1, 'tech1', 'Dispatch', 'customer1', 'age1', 'timestamp1', 'serial1', 'comment1');
insert into `ato_openservicecalls` VALUES (2, 'tech2', 'Dispatch', 'customer2', 'age2', 'timestamp2', 'serial2', 'comment2');
insert into `ato_openservicecalls` VALUES (3, 'tech3', 'callstatus3', 'customer3', 'age3', 'timestamp3', 'serial3', 'comment3');

Моя попытка в редакторе данных Jquery:

Editor::inst( $db, 'serviceteam')
->fields(
Field::inst( 'serviceteam.techid' )->validator( 'Validate::notEmpty' ),
Field::inst( 'serviceteam.techname' )->validator( 'Validate::notEmpty' ),
Field::inst( 'serviceteam.manager' )->validator( 'Validate::notEmpty' ),
Field::inst( 'serviceteam.dispatcher' )->validator( 'Validate::notEmpty' ),
Field::inst( 'serviceteam.cellphone' )->validator( 'Validate::notEmpty' ),
Field::inst( 'serviceteam.serviceteamstatus' )->validator( 'Validate::notEmpty' ),
Field::inst('ato_openservicecalls.SC_SCTechID')->validator("Validate::notEmpty"),
Field::inst('ato_openservicecalls.SC_CallStatus')->validator("Validate::notEmpty"),
Field::inst('ato_openservicecalls.BCARNA')->validator("Validate::notEmpty"),
Field::inst('ato_openservicecalls.Age')->validator("Validate::notEmpty"),
Field::inst('ato_openservicecalls.SC_CallTimestamp')->validator("Validate::notEmpty"),
Field::inst('ato_openservicecalls.Serial_ID')->validator("Validate::notEmpty"),
Field::inst('ato_openservicecalls.SC_CallComment')->validator("Validate::notEmpty")
)
->leftJoin('ato_openservicecalls', 'ato_openservicecalls.SC_SCTechID', '=', 'serviceteam.techid AND (ato_openservicecalls.SC_CallStatus = "Dispatch")')
->process( $_POST )
->json();

Этот запрос в редакторе данных Jquery возвращает всечто мне нужно, кроме подсчета.Мне нужен столбец, который показывает общее количество записей, где SC_CallStatus = Dispatch для каждого TechID.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...