2012-03-23 19 views
0

テーブル1とテーブル2を一緒に結合するには?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 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 

表2:

SELECT name, date, roomid, descr 
FROM Events 
AS t2 
WHERE date > NOW() 
GROUP BY roomid 
ORDER BY date 

私はそれが動作しませんt1.Roomid = t2.roomidにJOINを実行しようとするたびに。

+2

「動作しない」とはどういう意味ですか?結合を実行しようとしている構文を指定し、「うまくいかない」という意味を指定できますか?エラーが発生した場合(エラーの場合)、またはエラーなしで実行されますが、期待した結果が得られない場合(小さなサンプルを表示し、必要な出力と現在の理由を説明する必要があります)違う)。 –

答えて

0
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; 
1

、このいずれかを試してみてください。

@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` 
0

:これは参加するのはなぜは、あなたが参加するためにしようとしている独自のコードを与えるすべての最初の、あなたのために働いていません.....その後、私たちはこの懸念にあなたをさらに助けることができます。

関連する問題