Mysql İle Alengerli Sıralama Döngüsü?
-
hacılar çok alengirli bir iş var elimde kafamı toparlayamıyorum bir türlü zamanım da kısıtlı mysql ile bir sıralama yapmam gerekiyor işin içinden çıkamadım.
A,B,C,D,E isimli noktalarımız var.
Bu noktalarımız birbirine olan uzaklığına göre C,E,A,B,D şeklinde sıralanıyor.
1. Araç C,E,A,D
2. Araç E,A,B,D
noktalarında çalışıyor.
Saat tablomuz var. Noktalardan alınacak yolcuların saatleri bunlar
nokta | saat
-------------
A | 12:10
A | 11:20
A | 23:10
B | 22:15
B | 20:00
C | 19:50
D | 07:40
D | 10:45
E | 14:00
E | 22:15
E | 22:35
Sql cümlesi olarak ne yazmalıyımki;
1- C,E,A,D sıralamasına göre 1. araç en yakın saatli en yakın noktayı seçsin
2- En yakın noktadan sonra sıralamaya sadık kalarak, örneğin en yakın nokta E ise, A,D şeklinde devam ederek buralardaki (ilk bulunan en yakın nokta saati+1 saat) içinde gidecek yolcuları sırayla çeksin döngüyü bitirsin şayet uygun yolcu yoksa boş geçip döngüyü bitirsin
3- 1 araç için C,E,A,D sıralaması sona erdiğinde, 2. araç için aynı mantıkla E,A,B,D sıralamasına devam etsin ancak ortak kesişen E,A noktalarında 1. araca yerleşen yolcuları görmezden gelsin.
4- 2. araç da bittikten sonra sar başa yapsın, 1. araç için yeni en yakın nokta bulup döngüye devam etsin.
5- Tablodaki tüm yolculara araç atandıktan sonra döngüler sona ersin dünya daha mutlu daha güzel bir yer olsun.
anlatabildim mi acaba :|
sql cümlecikleri lazım bana ama asp,php gibi dillerle döngü tamamlamak şart tabiki o döngü yazılmasa bile mantık konusunda yardımcı olursanız sevinirim kafam durdu çalışmıyor.
-
pesimistzombie bunu yazdı
hacılar çok alengirli bir iş var elimde kafamı toparlayamıyorum bir türlü zamanım da kısıtlı mysql ile bir sıralama yapmam gerekiyor işin içinden çıkamadım.
A,B,C,D,E isimli noktalarımız var.
Bu noktalarımız birbirine olan uzaklığına göre C,E,A,B,D şeklinde sıralanıyor.
1. Araç C,E,A,D
2. Araç E,A,B,D
noktalarında çalışıyor.
Saat tablomuz var. Noktalardan alınacak yolcuların saatleri bunlar
nokta | saat
-------------
A | 12:10
A | 11:20
A | 23:10
B | 22:15
B | 20:00
C | 19:50
D | 07:40
D | 10:45
E | 14:00
E | 22:15
E | 22:35
Sql cümlesi olarak ne yazmalıyımki;
1- C,E,A,D sıralamasına göre 1. araç en yakın saatli en yakın noktayı seçsin
2- En yakın noktadan sonra sıralamaya sadık kalarak, örneğin en yakın nokta E ise, A,D şeklinde devam ederek buralardaki (ilk bulunan en yakın nokta saati+1 saat) içinde gidecek yolcuları sırayla çeksin döngüyü bitirsin şayet uygun yolcu yoksa boş geçip döngüyü bitirsin
3- 1 araç için C,E,A,D sıralaması sona erdiğinde, 2. araç için aynı mantıkla E,A,B,D sıralamasına devam etsin ancak ortak kesişen E,A noktalarında 1. araca yerleşen yolcuları görmezden gelsin.
4- 2. araç da bittikten sonra sar başa yapsın, 1. araç için yeni en yakın nokta bulup döngüye devam etsin.
5- Tablodaki tüm yolculara araç atandıktan sonra döngüler sona ersin dünya daha mutlu daha güzel bir yer olsun.
anlatabildim mi acaba :|
sql cümlecikleri lazım bana ama asp,php gibi dillerle döngü tamamlamak şart tabiki o döngü yazılmasa bile mantık konusunda yardımcı olursanız sevinirim kafam durdu çalışmıyor.
Tabloya saatleri saniye olarak kaydetsen. Şu anki zamanı saniye cinsine çevirip başka br değişkene ata.
SELECT saat, nokta FROM tablo WHERE saat > saniye_cinsinden_simdi ORDER BY asc LIMIT 1;
Bu sorguyla şu anki saniyeden sonraki vakitleri çekip sıralayıp birinci sıradakini alabilirsin diye umuyorum.
Nokta'yı da aldığın için geri kalan sıralamayı o noktadan başlatabilirsin.
-
Baba ben bişi anlamadım böyle, noktaların bulunduğu tabloyu paylaşırsan daha verimli olacak ..
-
tablo paylaştım yukarda tek tablo var nokta ve saat hücreleri. noktalar yazı olarak varchar tipli.
araçlar için en erken saatleri çekmemde sıkıntı yok bunu döngüye sokmakta güçlük çekiyorum.
-
Burada çalışsak ?
-
MhmdAlmz bunu yazdı
Burada çalışsak ?
çalışalım hocam ilk taşı ben attım http://sqlfiddle.com/#!9/2ebb8c/1 :B