如何对ColdFusion中循环Mysql查询生成的表进行排序?

bla*_*arg 0 mysql sorting coldfusion

我有一个HTML表,它是从'user'表的查询生成的,该表查找系统上的所有用户.

第二个查询使用"选择计数"通过检查用户ID在会议表中出现的次数来计算用户已预订的会议数.

<cfquery datasource="iPad" name="Two">
 SELECT COUNT(userID) AS meetingsCount from meeting where userID = '#One.userID#'
 </cfquery>
Run Code Online (Sandbox Code Playgroud)

我希望能够通过单击页面上的链接基于meetingsCount重新排序表.问题是我不知道如何查询这些信息,因为它在MYSQL中的技术上并不存在.

编辑; 使用左连接和验证的代码.

select user.userID, user.contactName, user.email, count(meeting.userID)
as meetingsCount 
 from user where user.userID = 30 
AND user.userID NOT IN ('1', '2', '3', '4', '58', '59', '62',
'63', '64', '66', '69', '71',    '72', '73', '78', '107')
AND SUBSTRING( meeting.meetingCode, 5, 2 ) 
BETWEEN 12 AND 22 
AND SUBSTRING( meeting.meetingCode, 7, 2 ) 
BETWEEN 1 AND 12 
AND SUBSTRING( meeting.meetingCode, 9, 2 ) 
BETWEEN 01 AND 31
left outer join meeting on user.userID = meeting.userID
Run Code Online (Sandbox Code Playgroud)

Tra*_*vis 6

您应该使用group by执行一个查询

编辑:我在你的答案中添加了你的where子句,但不是硬编码用户ID来排除你应该考虑将它们分配给一个角色,这样你就可以在一个地方管理角色,而不是每个排除这些人的查询.not in如果您要求提供单个ID,也不需要.我知道你现在只是陷入困境,但要牢记这一点.如果那还不行,我会检查你的子串逻辑.

<cfquery>
    select
          user.userID
        , firstName
        , lastName
        , count(*) as meetingCount
    from
        user
        left outer join meeting on users.userID = meeting.userID
          AND (    SUBSTRING( meeting.meetingCode, 5, 2 ) BETWEEN 12 AND 22 
               AND SUBSTRING( meeting.meetingCode, 7, 2 ) BETWEEN 1 AND 12 
               AND SUBSTRING( meeting.meetingCode, 9, 2 ) BETWEEN 1 AND 31)
      -- the ( ) above are optional but I like them to show groups of like filters
      -- if you don't want to use them feel free not to.
    where 
         user.userID NOT IN (1,2,3,4,5,59,62,63,64,66,69,71,72,73,78,107)     
    group by
          user.userID
        , firstName
        , lastName
    order by
        meetingCount
</cfquery>
Run Code Online (Sandbox Code Playgroud)

我认为MySql允许你通过别名来订购,我记不起来了.如果没有,请将订单更改为count(*)

  • 因为这是一个左外连接,它需要是连接的一部分,否则它将过滤掉NULL行并将它们删除,从而有效地使它成为一个内部连接.如果您对连接进行过滤,那么您仍然可以获得左外部的好处.[e]要明确,我指的是meetingCode标准,userID过滤可以而且应该在哪里完成. (4认同)
  • _"我认为MySql允许您按别名排序"_ - 它确实如此.但是,你需要在`HAVING`子句中使用`count(*)`(而不是别名). (3认同)
  • +1.@Travis - Busches是正确的.无论`from`子句说什么,当前查询*都是*由于过滤而执行隐式`内连接'. (2认同)