Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как выбрать все строки таблицы кроме последней? / 25 сообщений из 30, страница 1 из 2
06.11.2013, 20:38:19
    #38455179
Женя32
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выбрать все строки таблицы кроме последней?
Подскажите пожалуйста, как вывести все строки таблицы, кроме последней?
...
Рейтинг: 0 / 0
06.11.2013, 20:57:05
    #38455193
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выбрать все строки таблицы кроме последней?
FAQ: Выборка первой/последней записи в группах

Выбрать или НЕ выбрать - одно и то же.
...
Рейтинг: 0 / 0
06.11.2013, 21:06:45
    #38455200
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выбрать все строки таблицы кроме последней?
Женя32Подскажите пожалуйста, как вывести все строки таблицы, кроме последней?Отсортировать в обратном порядке, выбрать все, кроме первой, отсортировать в прямом порядке.
...
Рейтинг: 0 / 0
06.11.2013, 21:15:55
    #38455209
Женя32
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выбрать все строки таблицы кроме последней?
miksoftОтсортировать в обратном порядке, выбрать все, кроме первой, отсортировать в прямом порядке.

Примерчик можно?
...
Рейтинг: 0 / 0
06.11.2013, 21:49:04
    #38455230
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выбрать все строки таблицы кроме последней?
...
Рейтинг: 0 / 0
07.11.2013, 08:16:53
    #38455493
Женя32
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выбрать все строки таблицы кроме последней?
miksoftЖеня32,

http://sqlfiddle.com/#!2/8be06/1
ничего непонятно.......
...
Рейтинг: 0 / 0
07.11.2013, 09:48:36
    #38455576
bochkov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выбрать все строки таблицы кроме последней?
видишь ли в таблицах баз данных ,
нет понятия первой или последней строки таблицы,
есть данные, есть запросы, есть сортировка
как отсортируешь, такой порядок данных и будет,
в твоем случае надо понять чем последняя строка отличается от других записей,
и как понять что это последняя строка,
возможно если бы ты объяснил для чего это нужно, тогда и найдется решение
...
Рейтинг: 0 / 0
07.11.2013, 10:40:51
    #38455645
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выбрать все строки таблицы кроме последней?
Женя32miksoftЖеня32,

http://sqlfiddle.com/#!2/8be06/1
ничего непонятно.......Что именно непонятно?
Ссылка открывается?
Слева скриптик для создания тестовой таблицы и ее заполнения. Справа SQL-запрос, идею которого я предлагал ранее. Внизу результат выполнения этого запроса.
...
Рейтинг: 0 / 0
07.11.2013, 11:14:33
    #38455698
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выбрать все строки таблицы кроме последней?
Женя32,

На самом деле производительнее всего будет просто выбрать все, а последнюю запись выкинуть, не fetch-ить или просто не обрабатывать.
...
Рейтинг: 0 / 0
07.11.2013, 17:50:47
    #38456688
Женя32
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выбрать все строки таблицы кроме последней?
bochkov...
возможно если бы ты объяснил для чего это нужно, тогда и найдется решение

Пишу программу в которой записываться показания счетчиков электроэнергии, горячей и холодно воды. После внесения показаний счетчиков, программа должна высчитать расход. У меня есть две идеи-алгоритма: 1) Суммировать все строки поля(кроме последней) и полученную сумму вычесть из суммы последнего поля. 2) Из суммы записанной в последней строке, вычесть сумму содержащеюся в предпоследней строке.

Вот как я пытался сделать:

ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Select SUM(Холодная_Вода) from счет');
ADOQuery1.Open;
a:=ADOQuery1.Fields[0].AsInteger;

ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Select MAX(Холодная_Вода) from счет');
ADOQuery1.Open;
b:=ADOQuery1.Fields[0].AsInteger;
holvod:=a-b;

label3.Caption:=inttostr(holvod);

Но проблема в том, что SUM захватывает последнюю строку, и результат получается некорректным.
...
Рейтинг: 0 / 0
08.11.2013, 05:19:01
    #38457288
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выбрать все строки таблицы кроме последней?
Женя32У меня есть две идеи-алгоритма: 1) Суммировать все строки поля(кроме последней) и полученную сумму вычесть из суммы последнего поля. 2) Из суммы записанной в последней строке, вычесть сумму содержащеюся в предпоследней строке.С первым вариантом вы чего-то напутали...1020304050последнее показание - 50, последний расход по первому варианту - сколько? или "из суммы последнего поля" надо читать как "из суммы, включающей последнее поле"?
Женя32Select MAX(Холодная_Вода) from счетА вы не учитываете тот факт, что показания могут иногда передаваться с ошибками? То есть вот так, например:1020306050607080Ну путают люди цифры, на то они и люди...
...
Рейтинг: 0 / 0
08.11.2013, 08:37:36
    #38457346
bochkov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выбрать все строки таблицы кроме последней?
запрос надо сортировать в любом случае, для этого предлагаю ввести поле с датой показаний, например date_enter
тогда
Код: sql
1.
SELECT SUM(cool_water) FROM (SELECT cool_water FROM account ORDER BY date_enter DESC LIMIT 1,10000000000000) AS w
...
Рейтинг: 0 / 0
08.11.2013, 08:40:16
    #38457348
bochkov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выбрать все строки таблицы кроме последней?
и убери русские символы из названий таблиц и колонок,
удобней запросы писать в единой раскладке клавиатуры
...
Рейтинг: 0 / 0
08.11.2013, 10:45:38
    #38457466
Женя32
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выбрать все строки таблицы кроме последней?
tanglirЖеня32У меня есть две идеи-алгоритма: 1) Суммировать все строки поля(кроме последней) и полученную сумму вычесть из суммы последнего поля. 2) Из суммы записанной в последней строке, вычесть сумму содержащеюся в предпоследней строке.С первым вариантом вы чего-то напутали...1020304050последнее показание - 50, последний расход по первому варианту - сколько? или "из суммы последнего поля" надо читать как "из суммы, включающей последнее поле"?
Женя32Select MAX(Холодная_Вода) from счетА вы не учитываете тот факт, что показания могут иногда передаваться с ошибками? То есть вот так, например:1020306050607080Ну путают люди цифры, на то они и люди...
Да, я это учел. При добавлении идет вот такая проверка:
TryStrToInt(DBEdit1.Text,b);
if (holvod > b) then
begin
label4.Caption:='Введены не верные показания счетчика';
MessageBox(0,'Показания счетчика Холодной воды не может быть меньше показаний предыдущего месяца','Прием',MB_OK);
Abort;
end;
...
Рейтинг: 0 / 0
08.11.2013, 10:47:16
    #38457468
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выбрать все строки таблицы кроме последней?
bochkovтогдаДа нахрена вообще, извините за мой французский, складывать показания ??! Или у ТС это таки не показания, а потреблённые объёмы?
...
Рейтинг: 0 / 0
08.11.2013, 10:53:02
    #38457474
bochkov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выбрать все строки таблицы кроме последней?
tanglirbochkovтогдаДа нахрена вообще, извините за мой французский, складывать показания ??! Или у ТС это таки не показания, а потреблённые объёмы?
внатуре!!!
...
Рейтинг: 0 / 0
08.11.2013, 10:54:00
    #38457477
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выбрать все строки таблицы кроме последней?
Женя32Да, я это учел.Обубуенно "учли". Представьте себе теперь, что человек месяц назад подал неверные (завышенные) показания, а сейчас подаёт верные. Верные ! А ваша программа даёт отлуп.
...
Рейтинг: 0 / 0
08.11.2013, 11:07:13
    #38457501
Женя32
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выбрать все строки таблицы кроме последней?
tanglirbochkovтогдаДа нахрена вообще, извините за мой французский, складывать показания ??! Или у ТС это таки не показания, а потреблённые объёмы?

Можно и не складывать показания, можно просто узнать разность сумм занесенных в двух последних строках одного поля, разность - это и будет расход.

Например:
Предпоследняя строка Х поля: 5;
Последняя строка, это же поля: 8;

8-5=?.......
...
Рейтинг: 0 / 0
08.11.2013, 11:10:02
    #38457507
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выбрать все строки таблицы кроме последней?
Женя32Можно и не складывать показания, можно просто узнать разность сумм занесенных в двух последних строках одного поля, разность - это и будет расход.О чём и речь! А вот как узнать расход, исходя из суммы показаний?
...
Рейтинг: 0 / 0
08.11.2013, 12:00:15
    #38457608
bochkov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выбрать все строки таблицы кроме последней?
Код: sql
1.
2.
3.
SELECT @PREV,cool_water-@PREV,@PREV:=cool_water 
FROM (SELECT @SUM:=0,@PREV:=0) AS a
JOIN (SELECT 10 cool_water UNION SELECT 15  UNION SELECT 25  UNION SELECT 33  UNION SELECT 50  UNION SELECT 60  UNION SELECT 70  UNION SELECT 15 ) AS account
...
Рейтинг: 0 / 0
08.11.2013, 12:07:33
    #38457624
Женя32
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выбрать все строки таблицы кроме последней?
tanglirЖеня32Да, я это учел.Обубуенно "учли". Представьте себе теперь, что человек месяц назад подал неверные (завышенные) показания, а сейчас подаёт верные. Верные ! А ваша программа даёт отлуп.

Согласен, это косяк. Но мне бы сначала вышеизложенный вопрос решить, а потом на этой проблемой думать.
...
Рейтинг: 0 / 0
08.11.2013, 12:30:19
    #38457668
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выбрать все строки таблицы кроме последней?
Женя32Но мне бы сначала вышеизложенный вопрос решить"вышеизложенный вопрос"="найти последнее потребление"?
Код: sql
1.
2.
3.
SELECT
 (SELECT cool_water FROM account WHERE idcounter=100500 ORDER BY date_enter DESC LIMIT 0,1)
 -(SELECT cool_water FROM account WHERE idcounter=100500 ORDER BY date_enter DESC LIMIT 1,1)
...
Рейтинг: 0 / 0
08.11.2013, 15:34:09
    #38458089
Женя32
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выбрать все строки таблицы кроме последней?
tanglirЖеня32Но мне бы сначала вышеизложенный вопрос решить"вышеизложенный вопрос"="найти последнее потребление"?
Код: sql
1.
2.
3.
SELECT
 (SELECT cool_water FROM account WHERE idcounter=100500 ORDER BY date_enter DESC LIMIT 0,1)
 -(SELECT cool_water FROM account WHERE idcounter=100500 ORDER BY date_enter DESC LIMIT 1,1)


Извините, я не понял. Во это для чего: idcounter=100500 ? Что оно делает?
...
Рейтинг: 0 / 0
08.11.2013, 18:35:47
    #38458329
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выбрать все строки таблицы кроме последней?
Женя32,

я так полагаю "номер счетчика" то бишь "лицевой счет" владельца. :)

Если хранятся в БД "показания", то почему туда "сразу же" не запиховывать их разность с предыдущим значением как расход между двумя показаниями? Тогда можно тупо суммировать это поле по диапазону дат и получать суммарный расход. И не надо никаких "кроме".

Для каждого счетчика храним "показание", "на дату" и заодно, при сохранении, сразу вычисляемое значение "расход_от последнего". Тогда сумма расходов по периоду будет суммарным расходом. Нет?
...
Рейтинг: 0 / 0
08.11.2013, 19:20:24
    #38458375
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выбрать все строки таблицы кроме последней?
Arhat109я так полагаю "номер счетчика" то бишь "лицевой счет" владельца. :)[off]
Зачастую это далеко не одно и то же :)
но имелся в виду номер счётчика, да
[/off]
Arhat109Если хранятся в БД "показания", то почему туда "сразу же" не запиховывать их разность с предыдущим значением как расход между двумя показаниями?не, ну вообще-то есть варианты... но к случаю ТС они, похоже, не относятся, так что +1
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как выбрать все строки таблицы кроме последней? / 25 сообщений из 30, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]