lostyazilim
tr.link

Uzman Sorusu!

7 Mesajlar 1.518 Okunma
acebozum
tr.link

cheki cheki WM Aracı Kimlik Onayı
  • Üyelik 16.09.2012
  • Yaş/Cinsiyet 43 / E
  • Meslek yönetici
  • Konum İstanbul Anadolu
  • Ad Soyad K** A**
  • Mesajlar 54
  • Beğeniler 10 / 1
  • Ticaret 0, (%0)
Arkadaşlar aşağıdaki yapıda tablom var. 5 Dakikada bir sayaç bilgisini alıyorum. Bu sayacı bir aracın kilometre sayacı olarak düşünebilirsiniz.


ID TIMESTAMP KM SAYAC
1 3.11.2017 10:00 3778733
2 3.11.2017 10:05 3778774
3 3.11.2017 10:10 3778816
4 3.11.2017 10:15 3778857
5 3.11.2017 10:20 3778897
6 3.11.2017 10:25 3778937
7 3.11.2017 10:30 3778976
8 3.11.2017 10:35 3779015
9 3.11.2017 10:40 3779054
10 3.11.2017 10:45 3779094
11 3.11.2017 10:50 3779138
12 3.11.2017 10:55 3779178
13 3.11.2017 11:00 3779217
14 3.11.2017 11:05 3779260
15 3.11.2017 11:10 3779302
16 3.11.2017 11:15 3779343
17 3.11.2017 11:20 3779384
18 3.11.2017 11:25 3779426
19 3.11.2017 11:30 3779468
20 3.11.2017 11:35 3779511
21 3.11.2017 11:40 3779558
22 3.11.2017 11:45 3779600
23 3.11.2017 11:50 3779641
24 3.11.2017 11:55 3779681
25 3.11.2017 12:00 3779723
26 3.11.2017 12:05 3779764
27 3.11.2017 12:10 3779807
28 3.11.2017 12:15 3779849
29 3.11.2017 12:20 3779890
30 3.11.2017 12:25 3779932
31 3.11.2017 12:30 3779981
32 3.11.2017 12:35 3780024
33 3.11.2017 12:40 3780066
34 3.11.2017 12:45 3780110
35 3.11.2017 12:50 3780152
36 3.11.2017 12:55 3780195
37 3.11.2017 13:00 3780200


MySQL'de bir view oluşturup her saat gidilen yol miktarını göstermek istiyorum. Bunun için her saat başındaki veriden, bir önceki saat başındaki verinin farkını alıp göstermesi yeterli olacaktır.

Örneğin saat 11:00 - 12:00 arasında gidilen yolu bulmak için ID 25'teki değerden, ID 13'teki değeri çıkarmam lazım. Yani 3779723 - 3779217 = 506 km gibi.

Bana net olarak saat başlarındaki sayaç verilerinin farkını alacak viewi yazabilir misiniz?

View sonucu aşağıdaki gibi sıralı verecek.

....
.....
......
10:00 - 11:00 => 484
11:00 - 12:00 => 506
12:00 - 13:00 => 477
......
.....
....

Benim için önemli, işin içinden çıkamıyorum. :(
 

 

elektronikssl
webimgo

SertacSolmaz SertacSolmaz IT Manager Kullanıcı
  • Üyelik 27.08.2014
  • Yaş/Cinsiyet 38 / E
  • Meslek IT Manager
  • Konum Kayseri
  • Ad Soyad S** S**
  • Mesajlar 84
  • Beğeniler 31 / 18
  • Ticaret 0, (%0)
cheki Şahsen senin yerinde olsam,

Select id, zaman, sayac from Tablo where zaman like '%00:00'
order by id desc


SQL'i ile, sadece saat başlarındaki verileri çeker sayfamda tabloya dökerim..

id zaman sayac
25 2017-03-11T12:00:00Z 3779723
13 2017-03-11T11:00:00Z 3779217
1 2017-03-11T10:00:00Z 3778733

Ayrıca birde jQuery ile birbirleri arasındaki farkı tabloya eklerim..

Umarm fikir olmuştur..
 

 

Zoru hemen başarırız. İmkansız biraz zaman alır.

cheki cheki WM Aracı Kimlik Onayı
  • Üyelik 16.09.2012
  • Yaş/Cinsiyet 43 / E
  • Meslek yönetici
  • Konum İstanbul Anadolu
  • Ad Soyad K** A**
  • Mesajlar 54
  • Beğeniler 10 / 1
  • Ticaret 0, (%0)
Ben de ilk verileri sayfaya çekip işlem yaptırmayı düşündüm.

Fakat bunu bir yıllık zaman aralığı için yaptığımı düşünürsek 1 yılda 8766 saat var. Bu da 8766 tane veriyi çekip farkını almak anlamına geliyor. Ayrıca 10 farklı aracın dökümünü almak istediğimde 10x8766 veri olacak. Sayfayı oldukça yavaşlatacağını düşündüm. Bu nedenle view ile çözmek istedim.

Farklı önerilerinize açığım.
 

 

SertacSolmaz SertacSolmaz IT Manager Kullanıcı
  • Üyelik 27.08.2014
  • Yaş/Cinsiyet 38 / E
  • Meslek IT Manager
  • Konum Kayseri
  • Ad Soyad S** S**
  • Mesajlar 84
  • Beğeniler 31 / 18
  • Ticaret 0, (%0)
Bence bütün araçların plakasını select box içine çek birde tarih aralığı seçimi yap ve raporu öyle çağır böylece karmaşa ve çok veriden kurtulursun.. Tabi alternatif öneren olmazsa :)
 

 

Zoru hemen başarırız. İmkansız biraz zaman alır.
wmaraci
wmaraci

YazilimMimari YazilimMimari Eski adi: Turgay Can Kullanıcı
  • Üyelik 25.06.2012
  • Yaş/Cinsiyet 38 / E
  • Meslek Engineering Director
  • Konum İstanbul Avrupa
  • Ad Soyad T** C**
  • Mesajlar 771
  • Beğeniler 2 / 260
  • Ticaret 0, (%0)
aggregate/window fonksiyonlara bakınız.

http://code.openark.org/blog/mysql/selecting-a-specific-aggregated-column-data-in-group-by

https://stackoverflow.com/questions/29243379/mysql-aggregate-function-with-group-by-and-join

kolay gele.
SertacSolmaz

kişi bu mesajı beğendi.

https://www.linkedin.com/in/turgaycan/
Kaliteli kod yazılır.. (Günlük/Saatlik ücreti ile)

cheki cheki WM Aracı Kimlik Onayı
  • Üyelik 16.09.2012
  • Yaş/Cinsiyet 43 / E
  • Meslek yönetici
  • Konum İstanbul Anadolu
  • Ad Soyad K** A**
  • Mesajlar 54
  • Beğeniler 10 / 1
  • Ticaret 0, (%0)

SertacSolmaz adlı üyeden alıntı

Bence bütün araçların plakasını select box içine çek birde tarih aralığı seçimi yap ve raporu öyle çağır böylece karmaşa ve çok veriden kurtulursun.. Tabi alternatif öneren olmazsa :)


Evet, select box var zaten. Hiç biri seçili olmadığında tüm araçların toplam km'sini gösteriyorum. Ya da araçları tek tek (yada bir kaç tanesini aynı anda) seçip sadece seçililerin toplamını gösteriyorum.

Ama şu an viewle yapabildiğim, aynı saat içindeki max ve min km değerlerinin farkını alabilmek. Böyle olunca bir saat içindeki 0. ve 55. dakikadaki verilerin farkını alıyorum. Bu nedenle her saatte son 5 dakika kayıp oluyor.

Fakat, her saatin 0. dakikasındaki verilerin farkını almak istiyorum. Bunu yapabilirsem işim çözülecek.
 

 

cheki cheki WM Aracı Kimlik Onayı
  • Üyelik 16.09.2012
  • Yaş/Cinsiyet 43 / E
  • Meslek yönetici
  • Konum İstanbul Anadolu
  • Ad Soyad K** A**
  • Mesajlar 54
  • Beğeniler 10 / 1
  • Ticaret 0, (%0)
Bir trigger oluşturarak, KM SAYAC sütununa her kayıt eklendiğinde MESAFE adında başka bir sütuna otomatik olarak gidilen yol miktarını (son kayıt - bir önceki kayıt = mesafe) ekletebilir miyiz sizce?
 

 

Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al