Mysql 连接两个单独的表
我如何将表1和表2连接在一起 表1:Mysql 连接两个单独的表,mysql,join,Mysql,Join,我如何将表1和表2连接在一起 表1: SELECT Roomid, Room, Latitude, Longitude, ACOS(SIN((:lat))*SIN(RADIANS(Latitude)) + COS((:lat))*COS(RADIANS(Latitude))*COS(RADIANS(Longitude)-(:lon)))*(:R) AS D FROM Rooms AS t1 WHERE Latitude>(:minLat) AND Latit
SELECT Roomid, Room, Latitude, Longitude,
ACOS(SIN((:lat))*SIN(RADIANS(Latitude)) + COS((:lat))*COS(RADIANS(Latitude))*COS(RADIANS(Longitude)-(:lon)))*(:R) AS D
FROM Rooms
AS t1
WHERE Latitude>(:minLat) AND Latitude<(:maxLat)
AND Longitude>(:minLon) AND Longitude<(:maxLon)
AND ACOS(SIN((:lat))*SIN(RADIANS(Latitude)) + COS((:lat))*COS(RADIANS(Latitude))*COS(RADIANS(Longitude)-(:lon)))*(:R) < (:rad)
ORDER BY D
limit 6
每当我尝试在t1.Roomid=t2.Roomid上执行连接时,它都不起作用。试试这个:
SELECT * FROM
(
SELECT Roomid, Room, Latitude, Longitude,
ACOS(SIN((:lat))*SIN(RADIANS(Latitude)) + COS((:lat))*COS(RADIANS(Latitude))*COS(RADIANS(Longitude)-(:lon)))*(:R) AS D
FROM Rooms
AS t1
WHERE Latitude>(:minLat) AND Latitude<(:maxLat)
AND Longitude>(:minLon) AND Longitude<(:maxLon)
AND ACOS(SIN((:lat))*SIN(RADIANS(Latitude)) + COS((:lat))*COS(RADIANS(Latitude))*COS(RADIANS(Longitude)-(:lon)))*(:R) < (:rad)
ORDER BY D
limit 6
) A,
(
SELECT name, date, roomid, descr
FROM Events
AS t2
WHERE date > NOW()
GROUP BY roomid
ORDER BY date
) B
WHERE A.Roomid = B.roomid;
SELECT *
FROM
(
SELECT Roomid,
Room,
Latitude,
Longitude,
ACOS(SIN((:lat))*SIN(RADIANS(Latitude)) + COS((:lat))*COS(RADIANS(Latitude))*COS(RADIANS(Longitude)-(:lon)))*(:R) AS D
FROM Rooms
WHERE Latitude>(:minLat) AND
Latitude<(:maxLat) AND
Longitude>(:minLon) AND
Longitude<(:maxLon) AND
ACOS(SIN((:lat))*SIN(RADIANS(Latitude)) + COS((:lat))*COS(RADIANS(Latitude))*COS(RADIANS(Longitude)-(:lon)))*(:R) < (:rad)
) t1
INNER JOIN
(
SELECT `name`, `date`, roomid, `descr`
FROM `Events`
WHERE `date` > NOW()
GROUP BY roomid
) t2
ON t1.RoomID = t2.RoomID
ORDER BY t1.D, t2.`Date`
@Maknelly:为什么这个加入对您不起作用,首先给出您自己的代码,您正在尝试加入……然后我们可以进一步帮助您解决这个问题。您所说的不起作用是什么意思?您能给出您试图执行连接的语法并指定什么不起作用吗?在这种情况下,你会得到一个错误,什么错误,或者它运行时没有错误,但没有给出你期望的结果,那么你必须给我们一个小例子,并解释你想要的输出以及当前输出错误的原因。
SELECT *
FROM
(
SELECT Roomid,
Room,
Latitude,
Longitude,
ACOS(SIN((:lat))*SIN(RADIANS(Latitude)) + COS((:lat))*COS(RADIANS(Latitude))*COS(RADIANS(Longitude)-(:lon)))*(:R) AS D
FROM Rooms
WHERE Latitude>(:minLat) AND
Latitude<(:maxLat) AND
Longitude>(:minLon) AND
Longitude<(:maxLon) AND
ACOS(SIN((:lat))*SIN(RADIANS(Latitude)) + COS((:lat))*COS(RADIANS(Latitude))*COS(RADIANS(Longitude)-(:lon)))*(:R) < (:rad)
) t1
INNER JOIN
(
SELECT `name`, `date`, roomid, `descr`
FROM `Events`
WHERE `date` > NOW()
GROUP BY roomid
) t2
ON t1.RoomID = t2.RoomID
ORDER BY t1.D, t2.`Date`