/ / कई कॉलमों के साथ डिस्टिक्ट रिटर्न डुप्लिकेट - sql, sqlite, जियोलोकेशन

कई स्तंभों के साथ अलग लौटने वाले डुप्लिकेट - एसक्यूएल, एसक्लाइट, भौगोलिक स्थान

im अपने गृहनगर से बस मार्गों को दिखाने के लिए एंड्रॉइड में एक एप्लिकेशन विकसित कर रहा हूं, मुझे समस्याएं हैं क्वेरी के साथ, मेरे ऐप में दो टेबल हैं जैसा कि नीचे दिखाया गया है:

तालिका की जानकारी

ID | NAME     | DIRECTION
--------------------------
1 | BUS 1    | departure
2 | BUS 1    | return
3 | BUS 2    | departure
4 | BUS 2    | return
5 | BUS 3    | departure
6 | BUS 3    | return

तालिका समन्वय

ID | INFORMATION_ID |     LAT   |     LON       |
-------------------------------------------------
1 |    1           | 19.171184 | -96.174029    |
2 |    1           | 19.171021 | -96.173991    |
3 |    1           | 19.171002 | -96.173979    |
5 |    2           | 19.193244 | -96.138732    |
6 |    2           | 19.193368 | -96.138957    |
7 |    2           | 19.193332 | -96.138741    |

मैं 500 मीटर की सीमा के भीतर पास के बस मार्गों को दिखाने की कोशिश कर रहा हूं, और मैं वास्तव में इस क्वेरी के साथ ऐसा करने में सक्षम हूं

SELECT DISTINCT NAME,
((example.lat  - COORDINATES.LAT) * (example.lat - COORDINATES.LAT) + (example.lon - COORDINATES.LON) * (example.lon - COORDINATES.LON)) AS DISTANCE
FROM COORDINATES
INNER JOIN INFORMATION
ON COORDINATES.INFORMATION_ID=INFORMATION.ID
WHERE DISTANCE < 0.000023544  //supposedly 500 m, im not sure
ORDER BY DISTANCE

लेकिन समस्या यह है कि मैं में दोहराया मूल्यों हैNAME फ़ील्ड क्योंकि मेरे पास बस मार्गों से कई अक्षांश बिंदु हैं जो सीमा के भीतर हैं, मुझे इस तरह संबंधित नाम के साथ न्यूनतम दूरी वापस करने की आवश्यकता है:

ID | NAME     | DISTANCE
---------------------
1 | BUS 1    | 1.349834...
3 | BUS 2    | 1.367033...

मैं इस मुद्दे को हल करने की दिशा में किसी भी मार्गदर्शन की सराहना करता हूं, धन्यवाद।

उत्तर:

जवाब के लिए 0 № 1

देखें कि क्या इससे सबसे कम दूरी तय करने में मदद मिलती है।

SELECT NAME, MIN(DISTANCE) FROM
(
SELECT NAME,
((19.171150  - COORDINATES.LAT) * (19.171184 - COORDINATES.LAT) +
(-96.173990 - COORDINATES.LON) * (-96.173990 - COORDINATES.LON)) AS DISTANCE
FROM COORDINATES
INNER JOIN INFORMATION
ON COORDINATES.INFORMATION_ID=INFORMATION.ID
WHERE DISTANCE < 0.000023544
)
GROUP BY NAME

http://sqlfiddle.com/#!7/2e1ea/4