Я надеюсь, что это подходящий форум, чтобы обратиться за помощью. У меня есть SQL Query (MySQL), который не возвращает правильные записи в диапазоне дат (между двумя датами). Я рад ответить на вопросы в связи с запросом, однако, если кто-либо может внести предложения или исправить SQL-запрос, который будет отличным упражнением для изучения. Спасибо.Помощь с сложным запросом MySQL SQL
$raw_query = sprintf("SELECT
swtickets.ticketid AS `Ticket ID`,
swtickettimetracks.tickettimetrackid AS `Track ID`,
swtickets.ticketmaskid AS `TicketMASK`,
(
SELECT
swcustomfieldvalues.fieldvalue
FROM
swcustomfieldvalues,
swcustomfields
WHERE
swcustomfieldvalues.customfieldid = swcustomfields.customfieldid
AND swtickets.ticketid = swcustomfieldvalues.typeid
AND swcustomfields.title = 'Member Company'
ORDER BY
swcustomfieldvalues.customfieldvalueid DESC
LIMIT 1
) AS MemberCompany,
(
SELECT
swcustomfieldvalues.fieldvalue
FROM
swcustomfieldvalues,
swcustomfields
WHERE
swcustomfieldvalues.customfieldid = swcustomfields.customfieldid
AND swtickets.ticketid = swcustomfieldvalues.typeid
AND swcustomfields.title = 'Member Name'
ORDER BY
swcustomfieldvalues.customfieldvalueid DESC
LIMIT 1
) AS MemberName,
(
SELECT
swcustomfieldvalues.fieldvalue
FROM
swcustomfieldvalues,
swcustomfields
WHERE
swcustomfieldvalues.customfieldid = swcustomfields.customfieldid
AND swtickets.ticketid = swcustomfieldvalues.typeid
AND swcustomfields.title = 'Chargeable'
AND
swcustomfieldvalues.fieldvalue = '40'
ORDER BY
swcustomfieldvalues.customfieldvalueid ASC
LIMIT 1
) AS `Chg`,
swtickets.`subject` AS `Subject`,
swtickets.departmenttitle AS Category,
FROM_UNIXTIME(
swtickettimetracks.workdateline
) AS `workDateline`,
FROM_UNIXTIME(
swtickettimetracks.dateline
) AS `dateline`,
swtickettimetracks.timespent AS `Time Spent`,
swtickets.timeworked AS `Time Worked`
FROM
swtickets
INNER JOIN swusers ON swtickets.userid = swusers.userid
INNER JOIN swuserorganizations ON swuserorganizations.userorganizationid = swusers.userorganizationid
INNER JOIN swtickettimetracks ON swtickettimetracks.ticketid = swtickets.ticketid
WHERE
swuserorganizations.organizationname = '%s'
AND (
swtickets.ticketstatustitle = 'Closed'
OR swtickets.ticketstatustitle = 'Completed'
)
AND FROM_UNIXTIME(`workDateline`) >= '%s' AND FROM_UNIXTIME(`workDateline`) <= '%s'
ORDER BY `Ticket ID`,`Track ID`",
$userOrganization,
$startDate,
$endDate
);
Как я уже говорил, Query работает - однако он не возвращает записи правильно между двумя датами.
Однако, если я запускаю этот простой запрос к базе данных:
SELECT swtickettimetracks.tickettimetrackid,
swtickettimetracks.ticketid,
swtickettimetracks.dateline,
swtickettimetracks.timespent,
swtickettimetracks.timebillable,
FROM_UNIXTIME(swtickettimetracks.workdateline)
FROM swtickettimetracks
WHERE FROM_UNIXTIME(swtickettimetracks.workdateline) >= '2013-04-16' AND FROM_UNIXTIME(swtickettimetracks.workdateline) <= '2013-04-18'
я получаю правильный диапазон дат вернулся. Помогите? Благодарю вас в ожидании. Эдвард.
Это правильный форум, но на вопрос не хватает одной маленькой детали. Вы говорите, что php-запрос не возвращает ожидаемых результатов. Такой вопрос оставляет нам предположение относительно разницы между тем, что вы ожидали и тем, что вы на самом деле получили. –
Пожалуйста, отредактируйте свой вопрос: а) удалите информацию, отличную от SQL, так как ваш вопрос конкретно о SQL, и b) удалите символы 'tab' и замените пробелами (начиная с отступа 4 пробелов для форматирования кода кода) - у вас никогда не должно быть вкладок внутри блоков кода, так как это мешает правильному форматированию. Чем читабельнее вы зададите свой вопрос, тем лучше ваши шансы получить ответ быстро. Благодарю. :-) –