edogs software

edogs software
Рейтинг
775
Регистрация
15.12.2005
Должность
Программирование
Miracle:
Задача1 минимум : из таблицы нужно выбрать, по ОДНОЙ ПОСЛЕДНЕЙ записи пользователя
Если группировать по user1_id , то получаем ОДНУ ЗАПИСЬ, но ПЕРВУЮ!

Для начала: получаете не первую запись, а случайную. Случайная, как правило, оказывается первой попавшейся, т.е. первой. Если сделать (допустим) alter table order by id desc то случайная, как правило, начнет оказываться последней при группировке. Это кстати можно назвать 0 вариантом, но он ненадежный, ибо "как правило" может и не сработать.

Miracle:
и интересно мнение по поводу 1 тяжелый запрос и реализация на пхп, или много простых запросов, но тоже не без участия пхп.

1 тяжелый в среднем по палате и при прочих равных хуже, т.к. хуже масштабируется и легче застревает, плюс может не попадать в кэш и легко жрет память.

Miracle:
подожду...
если будет время ...
у меня все работает как нужно, просто ради общего образования.

Тогда все же немного абстрактно (таблиц Ваших у нас нет для теста, ну и нужные данные приджоинить уже сможете сами).

1 вариант.


select a.*
from pm as a left join pm as b
on (a.user1_id=b.user_1_id && a.user2_id=b.user2_id) and a.pm_id<b.pm_id
where b.pm_id is null group by a.pm_id

В чем смысл - джоинится таблица сама на себя, так что бы "слева" были более ранние сообщения чем "справа". После чего с помощью b.pm_id is null отсекаются все строки для которых в правой таблице хоть что-то есть (т.е. есть более поздние записи). Естественно к этому можно доджоинить любые нужные данные или добавить where в этот запрос что бы выбрать "неудаленные и непрочтенные".

2 вариант


select * from messages where pm_id in (
select max(pm_id) from pm group by user1_id, user2_id
)

В чем смысл - во вложенном запросе Вы выбираете наиболее ИД наиболее поздних сообщений для всех пар юзеров, после чего уже делаете выборку из таблицы сообщений конкретно по этим ИД (внешний запрос естественно можно расширить джоинами для того что бы выцепить данные из таблицы юзеров и т.д. или добавить where по удаленным и непрочтенным).

3 вариант

Он не вполне решение Вашей постановки задачи, но как ни странно, он наиболее умное решение вопроса с точки зрения нагрузки. Добавьте еще одно поле - последнее непрочтенное сообщение. Выставляйте его при прочтении сообщений юзером, это будет один маленький редкий запрос, который сэкономит Вам в будущем кучу нервов и времени.

Miracle:

Задача 2 максимум: если такое вообще возможно, выводить последнее сообщение для пары из user_id1 user_id2 или user_id2 user_id1.

зы. Я наверное мазохист, но я говорю об одном MYSQL запросе! Просто я себе не представляю как это можно сделать, но ведь это не означает что решения нет!

Решение есть, при чем достаточно шустрое, общая мысль тут в первом абзаце

/ru/forum/comment/5029477 .

Смысл тут в том, что бы выбрать только те значения, для которых значения с бОльшей датой не существует (джоиним таблицу с постами саму на себя соединяя по дате и оставляем только те строки, в которые приджоинить ничего не удалось).

Другое решение - вложенный мускул запрос, т.е. используете select max(postid) по нужным фильтрам и потом уже делаете выбор полных данных по типу select (полные данные) from ( select max(postid) по нужным фильтрам ). Но все это в одном sql запросе, просто используя вложенные.

Более традиционен и понятен второй вариант.

Более быстр первый.

На пхп такую задачу решать это маразм конечно.

p.s.: думается сейчас плохо, если нужно точный запрос - вечером накидаем.

HeroFold:
Все познается в сравнении.

Рыба не бывает второй свежести. Вы заявили что ограничения нет вообще.

HeroFold:
Вы человек образованный и убедительный. Вот может вы мне ответите - что такое WMZ? И как система вебмани мне умудряется менять их на ценные бумаги? ) Не налога ради, для интереса, для себя хочу знать 🙅

На сайте ВМ и на эксченджере вся информация есть.

Оба мнения неправильные.

Налог надо платить с тех ВМ от которых избавляешься.

Не важно что ты за них получаешь - реальные деньги, услуги, пополнение счета у мтс, ценные бумаги другого вида или еще что-то.

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

В принципе это ближе ко второму мнению, но! если программер у Вас попросил 100р или 100вмр, то расплатившись 100вмр-ками - Вы тут же должны забежать в налоговую и отдать им 13 рублей вместе с 3-ндфл (тут же - условно - до 1 апреля следующего года).

HeroFold:
50 баксов ограничение сверху - это не ограничение.

Глубоко, сильно.

HeroFold:
Это значит 0.8% для всех переводов до $6250, потом - чуть меньше. Миллионы долларов не доводилось переводить вебманями, искренне верю, что вам доводилось )

Достаточно 240 тысяч и одной копейки, что бы уже начать экономить. А еще есть пеймер чеки, которые вообще условно-бесплатны.

HeroFold, Вы контекст топика не забывайте. Какая-бы хитровыебвыдуманная схема не была внутри ВМ - в контексте вывода через АГ все достаточно понятно, договор о покупке ценных бумаг у Вас и приход денег на счет.

Хотите детальнее понять "для себя", нате ссылку http://www.guarantee.ru/information , курите на здоровье, особенно предпоследнюю ссылку, все разжевано не то что для бухгалтеров, даже для программистов и всего 72 страницы 😂

HeroFold:
А у вебманей денег предостаточно: 0.8% без ограничения суммы комиссии

До вот этого опуса нам казалось что Вы искренне заблуждаетесь, но теперь это больше похоже на какой-то унылый копирайтинг по чьему-то заказу.

DenisVS:
Тесла, кстати, уже в мороз вполне себе 300 км проезжает. Реально узкое место — отсутствие инфраструктуры. Т.е. в той же Москве можно встать без возможности заправиться. А если специальные розетки будут в каждом дворе, на каждой парковке, чем не вариант?
PS555:
Получается, на полную зарядку Теслы нужно порядка 400 рублей (грубо при тарифе 4 рубля за 1 кВт). Авторевю тестировали её зимой при -15 и на одной зарядке удалось проехать около 180-210 км. По деньгам не сильно дешевле современных бензиновых моторов. Что касается мощности Теслы в 421 лс, то отмечается падение ускорения по мере разрядки батареи, а также на скоростях около 150 км/ч. А теперь нужно учесть при этой экономии на бензине придется тратить время на подзарядку (а это особенно неудобно в дальних поездках), а также не забываем, что аккумулятор там не вечный и его стоимость подозреваю будет немалой. Вывод - перспективы пока не очень радужные и не думаю, что это повод для обесценивания нефти.

Если теслы выйдут из статуса игрушек, то электричество для них перейдет в статус топлива. В бензине доля налогов, акцизов и прочего - до 70% доходит, в электричестве ноль. Даже если не смогут эти 70% засунуть в цену электричества - перенесут их в транспортный налог или еще какие-нибудь сборы. То на то и выйдет.

Webit:
edogs, когда дают график платежей, там 2 суммы - процент и тело. Так вот процентов в начале всегда больше и со сроком уменьшается, а тело наоборот увеличивается. То есть вроде половину срока проплатил, а должен в итоге больше половины.

Верно. Незнакомого с математикой человека это может смущать и ему действительно может казаться что он платит проценты вперед.

Этим в частности пользуются всякие а) копирайтеры которым надо на сайт свой затащить людей под девизом "банки вас обманывают, требуют проценты вперед" б) юристы, которым надо оказать консультацию или даже взять дело под девизом "вы мне сейчас заплатите, а я вам столько денег может быть отсужу" в) кредитные брокеры заявляющие - ну на самом деле не так много вы переплачиваете по ипотеке, выплатите досрочно - проценты можно будет вернуть - в общем полный набор стервятников который наживается на этом... а так же те кто на это купился.

Эту "разницу" отсудить невозможно. Потому что проценты вперед не платятся. То что вначале они больше, чем в конце, так это объясняется тем простым фактом, что в начале сумма долга больше чем в конце, а проценты начисляются на сумму долга.

White Wolf:
почему бы не включить в свой "арсенал" одну из самых (если не самую) твердых валют мира?

Подавайте заявку в вебмани, обосновывайте и включат http://www.webmoney.ru/rus/cooperation/guarantors.shtml

Webit:
edogs, объясните для непонятливых, что там не так написано.

Нет никаких "уплаченных вперед" процентов при аннуитете (так же как и по дифференциалу). Возмещать при досрочном погашении, как следствие, нечего.

Всего: 12159