powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как выбрать все строки таблицы кроме последней?
30 сообщений из 30, показаны все 2 страниц
Как выбрать все строки таблицы кроме последней?
    #38455179
Женя32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пожалуйста, как вывести все строки таблицы, кроме последней?
...
Рейтинг: 0 / 0
Как выбрать все строки таблицы кроме последней?
    #38455193
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FAQ: Выборка первой/последней записи в группах

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

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

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

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

На самом деле производительнее всего будет просто выбрать все, а последнюю запись выкинуть, не fetch-ить или просто не обрабатывать.
...
Рейтинг: 0 / 0
Как выбрать все строки таблицы кроме последней?
    #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
Как выбрать все строки таблицы кроме последней?
    #38457288
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Женя32У меня есть две идеи-алгоритма: 1) Суммировать все строки поля(кроме последней) и полученную сумму вычесть из суммы последнего поля. 2) Из суммы записанной в последней строке, вычесть сумму содержащеюся в предпоследней строке.С первым вариантом вы чего-то напутали...1020304050последнее показание - 50, последний расход по первому варианту - сколько? или "из суммы последнего поля" надо читать как "из суммы, включающей последнее поле"?
Женя32Select MAX(Холодная_Вода) from счетА вы не учитываете тот факт, что показания могут иногда передаваться с ошибками? То есть вот так, например:1020306050607080Ну путают люди цифры, на то они и люди...
...
Рейтинг: 0 / 0
Как выбрать все строки таблицы кроме последней?
    #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
Как выбрать все строки таблицы кроме последней?
    #38457348
bochkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и убери русские символы из названий таблиц и колонок,
удобней запросы писать в единой раскладке клавиатуры
...
Рейтинг: 0 / 0
Как выбрать все строки таблицы кроме последней?
    #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
Как выбрать все строки таблицы кроме последней?
    #38457468
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bochkovтогдаДа нахрена вообще, извините за мой французский, складывать показания ??! Или у ТС это таки не показания, а потреблённые объёмы?
...
Рейтинг: 0 / 0
Как выбрать все строки таблицы кроме последней?
    #38457474
bochkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirbochkovтогдаДа нахрена вообще, извините за мой французский, складывать показания ??! Или у ТС это таки не показания, а потреблённые объёмы?
внатуре!!!
...
Рейтинг: 0 / 0
Как выбрать все строки таблицы кроме последней?
    #38457477
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Женя32Да, я это учел.Обубуенно "учли". Представьте себе теперь, что человек месяц назад подал неверные (завышенные) показания, а сейчас подаёт верные. Верные ! А ваша программа даёт отлуп.
...
Рейтинг: 0 / 0
Как выбрать все строки таблицы кроме последней?
    #38457501
Женя32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglirbochkovтогдаДа нахрена вообще, извините за мой французский, складывать показания ??! Или у ТС это таки не показания, а потреблённые объёмы?

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

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

8-5=?.......
...
Рейтинг: 0 / 0
Как выбрать все строки таблицы кроме последней?
    #38457507
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Женя32Можно и не складывать показания, можно просто узнать разность сумм занесенных в двух последних строках одного поля, разность - это и будет расход.О чём и речь! А вот как узнать расход, исходя из суммы показаний?
...
Рейтинг: 0 / 0
Как выбрать все строки таблицы кроме последней?
    #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
Как выбрать все строки таблицы кроме последней?
    #38457624
Женя32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglirЖеня32Да, я это учел.Обубуенно "учли". Представьте себе теперь, что человек месяц назад подал неверные (завышенные) показания, а сейчас подаёт верные. Верные ! А ваша программа даёт отлуп.

Согласен, это косяк. Но мне бы сначала вышеизложенный вопрос решить, а потом на этой проблемой думать.
...
Рейтинг: 0 / 0
Как выбрать все строки таблицы кроме последней?
    #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
Как выбрать все строки таблицы кроме последней?
    #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
Как выбрать все строки таблицы кроме последней?
    #38458329
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Женя32,

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

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

Для каждого счетчика храним "показание", "на дату" и заодно, при сохранении, сразу вычисляемое значение "расход_от последнего". Тогда сумма расходов по периоду будет суммарным расходом. Нет?
...
Рейтинг: 0 / 0
Как выбрать все строки таблицы кроме последней?
    #38458375
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109я так полагаю "номер счетчика" то бишь "лицевой счет" владельца. :)[off]
Зачастую это далеко не одно и то же :)
но имелся в виду номер счётчика, да
[/off]
Arhat109Если хранятся в БД "показания", то почему туда "сразу же" не запиховывать их разность с предыдущим значением как расход между двумя показаниями?не, ну вообще-то есть варианты... но к случаю ТС они, похоже, не относятся, так что +1
...
Рейтинг: 0 / 0
Как выбрать все строки таблицы кроме последней?
    #38458382
Женя32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglirЖеня32У меня есть две идеи-алгоритма: 1) Суммировать все строки поля(кроме последней) и полученную сумму вычесть из суммы последнего поля. 2) Из суммы записанной в последней строке, вычесть сумму содержащеюся в предпоследней строке.С первым вариантом вы чего-то напутали...1020304050последнее показание - 50, последний расход по первому варианту - сколько? или "из суммы последнего поля" надо читать как "из суммы, включающей последнее поле"?
Женя32Select MAX(Холодная_Вода) from счетА вы не учитываете тот факт, что показания могут иногда передаваться с ошибками? То есть вот так, например:1020306050607080Ну путают люди цифры, на то они и люди...

Ответ на первый вариант:

Если показания были переданы не верно, то обслуживающая компания обычно поступает так(по крайне мере наша компания):

1-й месяц: 20; 2-й: 30; 3-й: 25 и т.д.
Если последнии показания меньше чем в прошлом месяце, то последнии показания приравниваются к последниму наибольшему показанию:
25=30;
30-30=0.

программно можно записать так:
var
a,b :integer;
...
if a>b then
a:=b;
...
a-b=0.
...
Рейтинг: 0 / 0
Как выбрать все строки таблицы кроме последней?
    #38458394
Женя32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arhat109Женя32,

...

Для каждого счетчика храним "показание", "на дату" и заодно, при сохранении, сразу вычисляемое значение "расход_от последнего". Тогда сумма расходов по периоду будет суммарным расходом. Нет?

Для этого варианта нужно дополнительное поле на каждый счетчик для хранения результата.

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

rez:b-holvod;
Form1.ADOQuery2.Edit;
Form1.ADOQuery2.FieldByName('Расход холвод').AsInteger :=rez;
Form1.ADOQuery2.Post;
...
Рейтинг: 0 / 0
Как выбрать все строки таблицы кроме последней?
    #38458403
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Женя32Ответ на первый вариант:

Если показания были переданы не верно, то обслуживающая компания обычно поступает так(по крайне мере наша компания):

1-й месяц: 20; 2-й: 30; 3-й: 25 и т.д.
Если последнии показания меньше чем в прошлом месяце, то последнии показания приравниваются к последниму наибольшему показанию:
25=30;
30-30=0.это не ответ
или ответ, но не на тот вопрос
напоминаю, вопрос был такой - каким образом сумма предыдущих показаний может помочь в расчёте текущего потребления?
...
Рейтинг: 0 / 0
Как выбрать все строки таблицы кроме последней?
    #38458445
Женя32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
,tanglir.....
напоминаю, вопрос был такой - каким образом сумма предыдущих показаний может помочь в расчёте текущего потребления?

Да, Вы правы, эта идея неверна.......

Тогда нужно исходить из того, что нужно находить поле с наибольшем значением.
...
Рейтинг: 0 / 0
Как выбрать все строки таблицы кроме последней?
    #38458527
Женя32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Женя32,
Все, вопрос решен! Всем спасибо.
...
Рейтинг: 0 / 0
30 сообщений из 30, показаны все 2 страниц
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как выбрать все строки таблицы кроме последней?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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