php mysql按优先级排序

时间:2013-12-22 13:45:36

标签: php mysql

我有下表:

 Properties
 id     agency_id     refno
 1       1            AA101
 2       3            AA201
 3       2            AA501
 4       1            AA762
 5       3            AA555

 agency
 agency_id      agency_name     priority
  1                A              30
  2                B              10
  3                C              20

我已在代理商表中定义了每个代理商的优先级:

现在我想根据排名和优先级从属性表中提取行。我想从第一个代理商中提取第一行,从第二个代理商提取第一行,从第三个代理商提取第一行,依此类推。

然后是第一代理的第二行,第二代理的第二行,第三代理的第二行等等。

然后我想根据每个机构的优先级对整个结果进行排序。我使用以下条款,但它没有给出所需的结果

 select properties.id,
        properties.agency_id,
        IF(@prev <> properties.agency_id, @cnt := 1, @cnt := @cnt + 1) AS rank, @prev := properties.agency_id,
        properties.refno
 where properties.agency_id = agency.agency_id
        order by agency.priority, rank

我已经加入了连接,其工作正常没有错误。但我需要的结果如下:

我已在代理商表中定义了每个代理商的优先级。通过join,查询工作正常。我需要的结果如下:

 agency2 row1
 agency3 row1
 agency1 row1

 agency2 row2
 agency3 row2
 agency1 row2

 agency2 row3
 agency3 row3
 agency1 row3

根据代理商表和排名中定义的优先级。

1 个答案:

答案 0 :(得分:1)

请仔细阅读JOIN

的概念

查询必须join两个表。

select 
  properties.id,
  properties.agency_id,
  IF(@prev <> properties.agency_id, @cnt := 1, @cnt := @cnt + 1) AS rank, 
  @prev := properties.agency_id,
  properties.refno
FROM properties
INNER JOIN agency  ON properties.agency_id = agency.agency_id
order by agency.priority, rank