Вернуться   Дизайнерский форум » ВЕБ-ПРОГРАММИРОВАНИЕ » ASP, Perl, PHP и MySQL

MySQL. Сумма длин строк.

Обсуждение темы MySQL. Сумма длин строк. в разделе ASP, Perl, PHP и MySQL, часть категории ВЕБ-ПРОГРАММИРОВАНИЕ; Пишу графическую оболочку для трекера. Надо выбрать из базы строки по какому-либо условию, при этом выбрать сумму длин строк. Т.е. запрос вида SELECT ...


Закрытая тема
 
Опции темы
Старый 09.01.2009, 19:03   #1
Пишу графическую оболочку для трекера. Надо выбрать из базы строки по какому-либо условию, при этом выбрать сумму длин строк. Т.е. запрос вида
SELECT id,name,length(name),sum(length(name)) WHERE param=123 ORDER by date LIMIT 0,50
Но мускул выдаёт ошибку при использовании sum(length(name)). Что посоветуете?
 
Старый 09.01.2009, 19:03
Ссылки
Старый 09.01.2009, 19:06   #2
Используйте подзапросы.
Код:
SELECT SUM(x.l) FROM (SELECT length(name) as l FROM table WHERE params = 123) x
Запись для PostgreSQL, но, по идее, должно сработать и в других СУБД.
 
Старый 09.01.2009, 19:44   #3
Сумму запрос вычислить смог. Но проблема в том, что кроме суммы он вернуть ничего не может. Я хотел одним запросом получить и сумму длин и данные.
Получился вот такой запрос. Если убрать data, то он выполняется.
Код:
SELECT SUM(x.l),(data) FROM (SELECT length(data) as l,data FROM comments WHERE date < 0xFFFFFFFF) x
Вылетает с ошибкой:
Код:
Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause
Возможно ли получить всё сразу - и сумму и данные?
 
Старый 09.01.2009, 20:05   #4
Он и не сможет выполниться: SUM выдаёт один результат на все исходные данные, причём этот результат он получает только после того, как просмотрит все data.

Сделайте два разных запроса: один на выборку суммы и второй на выборку отдельных элементов — это нормально.
 
Старый 26.01.2009, 03:20   #5
Цитата:
Сообщение от deMone Посмотреть сообщение
Он и не сможет выполниться: SUM выдаёт один результат на все исходные данные, причём этот результат он получает только после того, как просмотрит все data.

Сделайте два разных запроса: один на выборку суммы и второй на выборку отдельных элементов — это нормально.
Хм... Это даже теоретически невозможно?
Дело в том, что если между выполнением SQL-запросов в таблицу вставится новая строка, то результат запроса данных будет другой, а следовательно и длинна строк будет другая. Можно, конечно, делать проверку на совпадение длин, но всё-таки как-то это некрасиво...
 
Старый 26.01.2009, 04:17   #6
Цитата:
Сообщение от Shtrenyov Посмотреть сообщение
Дело в том, что если между выполнением SQL-запросов в таблицу вставится новая строка, то результат запроса данных будет другой, а следовательно и длинна строк будет другая. Можно, конечно, делать проверку на совпадение длин, но всё-таки как-то это некрасиво...
В SQL существуют транзакции и подзапросы. И то и другое может вам помочь.

Добавлено через 19 секунд

Да, ещё блокировки таблиц.

Последний раз редактировалось deMone; 26.01.2009 в 04:17.. Причина: Добавлено сообщение
 
Старый 26.01.2009, 04:17
Закрытая тема




Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MySQL 74ivan74 Кальянная 0 16.10.2010 14:33
PHP + MySQL бан ip Tigran ASP, Perl, PHP и MySQL 2 11.06.2010 17:23
Как сохранить перевод строк в Html коде condor HTML, CSS, JavaScript 4 09.11.2006 10:52
MySQL Razrushitel ASP, Perl, PHP и MySQL 3 18.09.2005 16:18
Размер строк и столбцов lamer HTML, CSS, JavaScript 7 23.02.2004 09:58


Текущее время: 23:15. Часовой пояс GMT +4.

Реклама на форуме Условия размещения рекламы
Биржа ссылок Заработай на сайте!
Дизайнерский форум