Форум → Разработка → Базы данных → запрос
запрос
Страницы: ← Следующая страница →
-
23 января 2009 г. 23:26, спустя 15 минут 47 секунд
Через JOINhttps://smappi.org/ - платформа по созданию API на все случаи жизни -
23 января 2009 г. 23:31, спустя 4 минуты 10 секунд
спасибо, нашел http://www.codinghorror.com/blog/archives/000976.html -
26 января 2009 г. 15:12, спустя 2 дня 15 часов 41 минуту
Вообще можно и вьюшкой если InnoDB и часто запрос юзаеться:) -
26 января 2009 г. 16:01, спустя 49 минут 17 секунд
Я последний раз через UNION собрал такую функцию, пол дня убил на неё:-)
$sql = "
SELECT SO.ID AS SOID, SO.LimitDate,
REPLACE(CAST(SO.Description AS varchar(max)),'', char(13)) AS SODescription, CK.I3D,
CONVERT(varchar(5), OGP.Start, 108) AS Start, CONVERT(varchar(5), OGP.Ende, 108) AS Ende,
Left(CONVERT(int, DATEDIFF(mi, OGP.Start, OGP.Ende))/10, NULL) AS LE, CONVERT(varchar, OGP.Start, 104) AS Datum,
OWT.ID AS OWTID, OWT.I3DAgent AS IDAgent, OWT.Agent AS OWTAgent,
OGP.ID AS OGPID, OGP.Erledigt, REPLACE(CAST(OGP.Description AS varchar(max)),'', char(13)) AS OGPDescription,
Str(FP.Price*OGP.Quantity, 10, 2) AS Betrag,
SB1.I3D AS TechID, CPS.Vorname +' ' + CPS.Name AS Technikername, OJK.Code, OJK.ID,
OGP.Quantity AS Anzahl, Str(FP.Price, 10, 2) AS Price,
FP.Description AS FPDescription, FP.TimeTotal, FP.Code AS PCode,
CPS.KurzZeich AS KurzName, WA.Username, WA.TypeI3D
FROM " . DBSAM . "Orders SO
LEFT OUTER JOIN " . DBCENTRON . "Kunden CK ON SO.I3DKunde = CK.I3D
LEFT OUTER JOIN " . DBCENTRON . "Sichbenu SB ON SO.I3DAgent = SB.I3D
LEFT OUTER JOIN " . DBCENTRON . "Personal CPal ON SB.Personal = CPal.I3D
INNER JOIN " . DBSAM . "OrderWorkingTimes OWT ON SO.ID = OWT.IDOrder
LEFT OUTER JOIN " . DBCENTRON . "Sichbenu SB1 ON OWT.I3DAgent = SB1.Personal
LEFT OUTER JOIN " . DBCENTRON . "Personal CPS ON OWT.I3DAgent = CPS.I3D
LEFT OUTER JOIN " . DBCENTRON . "WebAccounts WA ON CPS.I3D = WA.TypeI3D
RIGHT OUTER JOIN " . DBSAM . "OrderGlobalPayments OGP ON OWT.ID = OGP.IDWorkingTime
INNER JOIN " . DBSAM . "FixedPayments FP ON OGP.IDGlobalPayment = FP.ID
INNER JOIN " . DBSAM . "OrderJobKinds OJK ON OGP.IDJobKind = OJK.ID
WHERE SO.Deleted = 0 AND SO.ID = " . $this->mdb2->quote($OrderID, 'integer') .
" AND OJK.ID=1 AND OWT.Deleted=0 AND OGP.Deleted=0
UNION ALL
SELECT SO2.ID AS SOID, SO2.LimitDate,
REPLACE(CAST(SO2.Description AS varchar(max)),'', char(13)) AS SODescription, CK2.I3D,
CONVERT(varchar(5), OGP2.Start, 108) AS Start, CONVERT(varchar(5), OGP2.Ende, 108) AS Ende,
CONVERT(int, DATEDIFF(mi, OGP2.Start, OGP2.Ende))/10 AS LE, CONVERT(varchar, OGP2.Start, 104) AS Datum,
OWT2.ID AS OWTID, OWT2.I3DAgent AS IDAgent, OWT2.Agent AS OWTAgent, OGP2.ID AS OGPID, OGP2.Erledigt,
REPLACE(CAST(OGP2.Description AS varchar(max)),'', char(13)) AS OGPDescription,
Str((CONVERT(float, DATEDIFF(mi, OGP2.Start, OGP2.Ende)))*(VP2.Price)/10, 10, 2) AS Betrag,
SB12.I3D AS TechID, CPS2.Vorname +' ' + CPS2.Name AS Technikername,
OJK2.Code, OJK2.ID, Left(OGP2.Quantity, NULL) AS Anzahl, Str(VP2.Price, 10, 2) AS Price, VP2.Description AS FPDescription, VP2.TimeTotal, VP2.Code AS PCode,
CPS2.KurzZeich AS KurzName, WA1.Username, WA1.TypeI3D
FROM " . DBSAM . "Orders SO2
LEFT OUTER JOIN " . DBCENTRON . "Kunden CK2 ON SO2.I3DKunde = CK2.I3D
LEFT OUTER JOIN " . DBCENTRON . "Sichbenu SB2 ON SO2.I3DAgent = SB2.I3D
LEFT OUTER JOIN " . DBCENTRON . "Personal CPal2 ON SB2.Personal = CPal2.I3D
LEFT OUTER JOIN " . DBSAM . "OrderWorkingTimes OWT2 ON SO2.ID = OWT2.IDOrder
LEFT OUTER JOIN " . DBCENTRON . "Sichbenu SB12 ON OWT2.I3DAgent = SB12.Personal
LEFT OUTER JOIN " . DBCENTRON . "Personal CPS2 ON OWT2.I3DAgent = CPS2.I3D
LEFT OUTER JOIN " . DBCENTRON . "WebAccounts WA1 ON CPal2.I3D = WA1.TypeI3D
RIGHT OUTER JOIN " . DBSAM . "OrderGlobalPayments OGP2 ON OWT2.ID = OGP2.IDWorkingTime
INNER JOIN " . DBSAM . "VariablePayments VP2 ON OGP2.IDGlobalPayment = VP2.ID
INNER JOIN " . DBSAM . "OrderJobKinds OJK2 ON OGP2.IDJobKind = OJK2.ID
WHERE SO2.Deleted = 0 AND SO2.ID = " . $this->mdb2->quote($OrderID, 'integer') . " AND OJK2.ID=2 AND OWT2.Deleted=0 AND OGP2.Deleted=0" .
"ORDER BY Datum;";
$res =& $this->mdb2->query($sql);
//Überprüfe ob es zu Fehlern kam
if (PEAR::isError($res))
{
die($res->getMessage());
}
// $row = $res->fetchRow();
while($row = $res->fetchRow())
{
$OrderPrint[] = $row;
}
return $OrderPrint;
} -
26 января 2009 г. 16:03, спустя 2 минуты 13 секунд
Впринципе мнений куча - можна и вложеным запросом, но тогда ключики надо поставить
Я последний раз через UNION собрал такую функцию, пол дня убил на неё:-) -
26 января 2009 г. 16:05, спустя 1 минуту 37 секунд
Кому как удобней, в том случае по другому никак не получалось -
-
-
26 января 2009 г. 16:55, спустя 40 минут 42 секунды
а потом задают вопросы в сапорт: почему у меня вместо результата запроса возвращается "Mysql server has gone away!" ??Сапожник без сапог -
26 января 2009 г. 17:51, спустя 55 минут 31 секунду
Ну да - если глупо заархитектурить базу
а потом задают вопросы в сапорт: почему у меня вместо результата запроса возвращается "Mysql server has gone away!" ?? -
26 января 2009 г. 17:57, спустя 6 минут
сразу вспоминаю про битрикс … где в подсчете статы юзалось 34 таблицы ….. нормализация бд это хорошо, но моск то терять - это плохо )Сапожник без сапог -
27 января 2009 г. 0:42, спустя 6 часов 45 минут 24 секунды
Я вот сам с таких запросом, как у SaM1001 офигеваю. Ну понимаю, что это круто и прочее, но все равно никак не могу понять для чего они такие нужны там, где их можно заменить на два-три более простых и возможно в будущем более информативных запроса.
Может потому что ещё зелен, а может потому что просто пока самому не доводилось делать что-то более-менее серезное.
Но все равно считаю такие запросы не самым лучшим способом показать способности прогера :) -
27 января 2009 г. 12:17, спустя 11 часов 34 минуты 55 секунд
Не всегда просто разбить запрос на части, ещё скажи запхать в php массивчик, так полмилионный, сгрупировать его, обработать, так несколько раз, а потом ещё склеить. На мелких проектах да - там даже аплоады можна с темпов не удалять (стебусь)
Я вот сам с таких запросом, как у SaM1001 офигеваю. Ну понимаю, что это круто и прочее, но все равно никак не могу понять для чего они такие нужны там, где их можно заменить на два-три более простых и возможно в будущем более информативных запроса.
Может потому что ещё зелен, а может потому что просто пока самому не доводилось делать что-то более-менее серезное.
Но все равно считаю такие запросы не самым лучшим способом показать способности прогера :) -
27 января 2009 г. 14:58, спустя 2 часа 40 минут 40 секунд
аплоады сами удаляются. по завершению работы скрипта.
Не всегда просто разбить запрос на части, ещё скажи запхать в php массивчик, так полмилионный, сгрупировать его, обработать, так несколько раз, а потом ещё склеить. На мелких проектах да - там даже аплоады можна с темпов не удалять (стебусь)
Я вот сам с таких запросом, как у SaM1001 офигеваю. Ну понимаю, что это круто и прочее, но все равно никак не могу понять для чего они такие нужны там, где их можно заменить на два-три более простых и возможно в будущем более информативных запроса.
Может потому что ещё зелен, а может потому что просто пока самому не доводилось делать что-то более-менее серезное.
Но все равно считаю такие запросы не самым лучшим способом показать способности прогера :)
не стебусьСапожник без сапог
Страницы: ← Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!