Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php mysql按优先级和排名排序_Php_Mysql - Fatal编程技术网

php mysql按优先级和排名排序

php mysql按优先级和排名排序,php,mysql,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

我有下表:

 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
我已在代理表中定义了每个代理的优先级:

现在我想根据排名和优先级从properties表中提取行。我想从第一机构提取第一行,从第二机构提取第一行,从第三机构提取第一行,依此类推

然后是第一机构的第二排、第二机构的第二排、第三机构的第二排,依此类推

然后我想根据每个机构的优先级对整个结果进行排序。我使用了以下条款,但没有达到预期效果

 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

根据代理表和等级中定义的优先级。

请检查加入的条件

查询必须
连接这两个表

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 
选择
properties.id,
properties.agent_id,
如果(@prev properties.agency_id,@cnt:=1,@cnt:=@cnt+1)作为秩,
@prev:=properties.agent\u id,
properties.refno
从属性
properties.agency\u id=agency.agency\u id上的内部联接代理
按机构、优先级、等级排序

如何为每个属性分配优先级?请记住,SQL表本质上是无序的,因此需要有一个列显式地包含这些信息。您能否提供一个理想情况下希望结果看起来像什么的表?我不确定我是否理解这个问题……您缺少了
FROM
子句,请添加它并改用
JOIN
,但不确定这是否是您要查找的内容。我已在agency表中定义了每个代理的优先级。查询在join中运行良好。我需要的结果如下:agency2 row1 agency3 row1 agency1 row1 agency2 row1 agency3 row1 agency1 row1我已经使用了连接,但仍然没有显示所需的结果。顺序应如下所示:agency2 row1 agency3 row1 agency1 row1 agency2 row2 agency1 row2 agency2 row3 agency3 row3 agency1 row3等agencytry
group by AGENTY id
group by by仅显示每个代理的一行。我想显示每组的所有行,直到最后。工作正常。我想根据机构对最新的房产进行排名。我有一个列名“created”,我正在尝试按代理的顺序。优先级,等级,属性。created,但它没有给我想要的结果。我怎样才能做到呢????谢谢,我如何对每个机构的最新添加属性进行排名????请帮忙。我有一个日期字段,我试图使用它的顺序创建描述。但它不工作。请帮忙
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