sql - SQLite : finding a function's minimum values -
मेरे पास उन टेबल हैं
नोड (#id, route_id, lat, lng) < / Code>
रूट (#id)
और मेरे पास चार इनपुट वैल्यू हैं: $ लैट 1, $ lng1, $ lat2, $ lng2, जो 2 जीपीएस निर्देशांक जीपीएस 1 और जीपीएस 2 का प्रतिनिधित्व करते हैं। मेरे पास एक दूरी का कार्य भी है जो मैंने डेटाबेस में जोड़ा है: दूरी (lat1, lng1, lat2, lng2)
जो मैं देख रहा हूं वह अनुरोध है जो मुझे जीपीएस 1 के सबसे निकटतम बिंदु देगा और प्रत्येक मार्ग के लिए जीपीएस 2 के निकटतम बिंदु इसलिए मुझे लगता है कि इसे शुरू करना चाहिए:
का चयन करें r.id, n1.lat, n1.lng, n2.lat, n2.lng नोड n1 से, नोड एन 2 को रूट पर एन 1 एनओ। Route_id = r.id और n2.route_id = r.id
और मैंने
को जोड़ने की कोशिश की, जहां दूरी (n1.lat, n1.lng, $ Lat1, $ lng1) = MIN (दूरी (n1.lat, n1.lng, $ lat1, $ lng1)) और दूरी (n2.lat, n2.lng, $ lat2, $ lng2) = MIN (दूरी (एन 2।
लेकिन यह इस त्रुटि को फेंकता है:
"कुल कार्य का दुरुपयोग MIN ()" < / कोड> मैंने भी सोचा कि मैं
SELECT r.id, n1.lat, n1.lng, n2.lat, n2.lng, दूरी (एन 1) का उपयोग कर सकता हूं । एलटी, एन 1.एल.एन., $ एलटी 1, $ एलएनजी 1) एएस डी 1, दूरी (एन 2.लैट, एन 2.एल.एन., एनएलएटी, एलएनजी 2) एएस डी 2 नोड एन 1 से, नोड एन 2 जीओएन रूट एन एन 1। आरयूटीईआईडी = आर पर Id और n2.route_id = r.id GROUP BY r.id
और n1 के लिए डी 1 से इसे सॉर्ट करने के लिए, n1.lng, d1 कॉलम और n2 के लिए डी 2 से। Lat, n2.lng, d2 कॉलम लेकिन मुझे नहीं पता कि यह कैसे करना है।
कोई भी विचार?
आपको एक सहसंबद्ध क्वेरी करने की आवश्यकता है:
SELECT r.id, n1.lat, n1.lng, n2.lat, n2.lng नोड n1 से , नोड एन 2 जीओएन रूट पर एन 1। आरयूटी। एनआईडी = आर.आईडी और एन 2। आरयूटीईआईडी = आर.आईडीईड जहां दूरी (एन 1.लैट, एन 1.एलएनजी, $ एलटी 1, $ एलएनजी 1) = (SELECT MIN (दूरी (अक्षांश, एलएनजी, $ Lat1, $ lng1)) नोड c_n से WHERE c_n.nid = n1.nid) और दूरी (n2.lat, n2.lng, $ lat2, $ lng2) = (SELECT MIN (दूरी (lat, lng, $ lat1, $ Lng1)) नोड से cnn WHERE c_n.nid = n2.nid)
(इस अनुमान पर मैं यह परीक्षण करने में असमर्थ हूँ, कृपया मुझे माफ़ कर दो अगर यह सही नहीं है, लेकिन यह चाहिए करीब हो मैं इस पर बाद में जांच करूंगा।)
Comments
Post a Comment