Форум → Разработка → Базы данных → запрос
запрос
Страницы: ← Следующая страница →
-
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 офигеваю. Ну понимаю, что это круто и прочее, но все равно никак не могу понять для чего они такие нужны там, где их можно заменить на два-три более простых и возможно в будущем более информативных запроса.
Может потому что ещё зелен, а может потому что просто пока самому не доводилось делать что-то более-менее серезное.
Но все равно считаю такие запросы не самым лучшим способом показать способности прогера :)
не стебусьСапожник без сапог
Страницы: ← Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!