2

テーブルからの開始時間に基づいて、今後のイベントを取得しようとしています。次のことを想定してみましょう: 実際には、テーブルに結合しています。テーブル A Locationid では主キーです。会場の名前を取得するために別のテーブルに参加しています。冗長なデータがあると思われるかもしれませんが、そうではありません。ユーザーが別の日に同じ会場を訪れています。

ここに画像の説明を入力

今、私は今後の計画のみを表示したいと思います

ロケーション ID 2511 および 2515

これが私が試しているクエリです

 SELECT B.`VenueID` ,
 A.rather_to_be_flying_now,
 A.my_favorite,
 A.Locationid,
 MIN( A.start ) ,
 MIN( A.end ) 
    FROM tbl_userselectedlocations A
    INNER JOIN tbl_Flyingapp_Venue B ON A.VenueID = B.VenueID
    WHERE A.Pilotid =  '709'
    GROUP BY  `VenueID` 
    ORDER BY A.my_favorite DESC , A.start

しかし、この時点で私は間違ったデータを取得しています

Locationid= 2514 と 2516 ではなく、それぞれ順番に 2511 と 2515 ここに画像の説明を入力

クエリに何か問題がありますか?

内部クエリを試してみました。ここではINNER JOINを使用していませんが、結果の値は異なります。

SELECT  A.Locationid, MIN(A.start), MIN(A.end)
FROM tbl_userselectedlocations A

WHERE A.Pilotid =  '709'
group by VenueID
ORDER BY A.my_favorite DESC , A.start
4

3 に答える 3

1

サブクエリを使用して各会場の希望する開始時刻だけを見つけてから、venueID と start の値を使用して自己結合によってその行から残りの情報を見つけてみてください。

SELECT B.VenueID, A.rather_bo_be_flying_now, A.my_favorite,
       A.Locationid, A.start, A.end
FROM (SELECT venueID, MIN(start) AS start 
      FROM tbl_userselectedlocations
      GROUP BY venueID) AS Z
INNER JOIN tbl_userselectedlocations A
ON A.VenueID = Z.VenueID AND A.start = Z.start
INNER JOIN tbl_Flyingapp_Venue B 
ON A.VenueID = B.VenueID
WHERE A.Pilotid = '709'
ORDER BY A.My_favorite DESC, A.start
于 2013-01-29T18:45:02.420 に答える
0

おそらく最初に副選択が必要です:

SELECT  C.VenueID            ,
    A.rather_to_be_flying_now,
    A.my_favorite            ,
    A.Locationid             ,
    C.STARTP                 ,
    C.ENDP
FROM    
(
    SELECT   D.VenueID                ,
             MIN( D.start ) AS STARTP ,
             MIN( D.end )   AS ENDP
    FROM     tbl_userselectedlocations D
    WHERE     D.Pilotid = '709'
    GROUP BY `VenueID`
) C
INNER JOIN tbl_userselectedlocations A
ON      A.VenueID = C.VenueID
INNER JOIN tbl_Flyingapp_Venue B
ON      A.VenueID = B.VenueID
ORDER BY A.my_favorite DESC ,
         C.STARTP
于 2013-01-29T13:17:27.960 に答える
0

これが私が使用したクエリです。

 $query="select distinct(`VenueID`),MIN(start) from  tbl_userselectedlocations 
 where `Pilotid` = '709' group by `VenueID`  order by `my_favorite` DESC ,start";

ここで while ループし、

   select * from tbl_userselectedlocations
   where VenueID = '$row[0]' and start='$row[1]' and Pilotid='709'";

これにより結果が得られますが、次のレコードがある場合 ここに画像の説明を入力

MIN(start)

2511 の locationidのみを返しますが、今後の計画として 2514 を表示する必要があり ます

于 2013-01-30T04:30:10.540 に答える