2

我正在尝试根据表中的开始时间获取即将发生的事件。让我们假设以下内容:实际上我们正在加入表格。在表 A Locationid 是主键。我们正在加入另一个表以获取场地名称。您可能认为我们有冗余数据,但事实并非如此。用户在不同的日子访问同一地点。

在此处输入图像描述

现在我只想显示即将到来的计划,即

locationid 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= 2511 和 2515 分别按顺序而不是 2514 和 2516 在此处输入图像描述

查询中有什么问题吗?

尝试过内部查询。此处未使用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

尝试使用子查询仅查找每个场所所需的开始时间,然后使用场所ID 和开始的值通过自联接从该行查找其余信息:

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 回答