Ich arbeite mit 2 Tabellen. location
und us_zipcodes
.MySQL Unterabfrage in auswählen, mehrere Spalten zurückgeben
location
enthält Benutzerkoordinaten und Fahrgeschwindigkeit.
us_zipcodes
enthält alle Städte, ihre Postleitzahlen und Koordinaten in den USA.
Das Ziel hier ist, den Benutzern Breite, Länge, Geschwindigkeit und nächstgelegene Stadt zurückzugeben.
In meiner Auswahl versuche ich 2 Spalten von us_zipcodes
in einer Select-Unterabfrage zurückzugeben. Ich verstehe, dass man eine Verbindung empfehlen könnte, aber meine Umstände erlauben keine ON
.
Die Unterabfrage wählt die Stadt anhand der Benutzerkoordinaten aus, die den Koordinaten der Stadt in der Tabelle us_zipcodes
am nächsten liegen.
Ich suche zu wissen, ob was ich tun möchte, und wenn ja, die richtige Syntax.
Mein Versuch ist unten. Vielen Dank im Voraus.
SELECT
l.lat,
l.lng,
l.speed
(
SELECT
CONCAT(city, ' ', state_abrv) AS nearest,
(
3959 *
acos(
cos(radians(l.lat)) *
cos(radians(lat)) *
cos(
radians(lng) -
radians(l.lng)
) +
sin(radians(l.lat)) *
sin(radians(lat))
)
) AS distance
FROM
us_zipcodes
ORDER BY
distance ASC
LIMIT 0, 1
) AS nearest, distance
FROM
location AS l
WHERE
l.userID = :userID
EDIT: Meine Tabellenstruktur ist wie gezeigt.
TABLE: location
ID | lat | lng | speed | userID
___________________________________________________________________________________
1 | 55.159399 | -74.98976 | 35 | 1
2 | 45.168399 | -52.56476 | 45 | 2
3 | 64.593399 | -64.32576 | 55 | 3
4 | 98.193399 | -72.81176 | 65 | 4
TABLE: us_zipcodes
ID | city | state_abrv | lat | lng
______________________________________________________________________________________
1 | Foo City | MI | 45.3265 | -81.98747
2 | Bar City | AK | 65.3265 | -65.98747
3 | Fake City | FL | 25.3265 | -75.98747
4 | Smith City | MI | 64.3265 | -89.98747
könnten Sie Ihre Tabellenstruktur – Beginner
liefern * meine Umstände erlauben kein 'ON'. * Warum nicht? –
Da in den beiden Tabellen keine Spalten geteilt werden. Es gibt keinen Link. Die Auswahl im inneren Join basiert auf den nächsten Koordinaten im Vergleich zum lat und lng der äußeren Abfrage. –