对PHP中不同类型的不同排序

时间:2013-11-27 11:07:28

标签: php mysql sorting

我的表格描述如下

**entry_table**

 - serial(int)
 - s_name(varchar)
 - user_id(int)
 - id(int)

**Students_details**

 - id(int)
 - user_id(int)
 - student_name(varchar)
 - adress(varchar)

**User_login**

 - user_id(int)
 - user_name(varchar)
 - password(varchar)
 - alotment(bool)

情景是学生申请多个奖学金。他们的选择存储在entry_table的s_name,user_id和id字段中。

我的下一步是建立一份申请特定奖学金的所有学生的排序列表,例如:"奖学金1"。

此列表还应显示学生的姓名(students_details表的student_name字段)

列表将根据系统提供的两种奖学金(优点和需求)进行分类。优点奖学金的申请人需要使用比率(获得的商标/总商标)按降序排序。但是,由于使用比率(家庭收入/非收入家庭成员人数),需要奖学金按升序缩短

我尝试使用

加入我的桌子
  $query = "SELECT *FROM entry_table, students_details 
WHERE entry_table.id=students_details.id
    group by entry.s_id,entry.student_id";

请按类型问题帮助排序。此外,上述查询有助于加入表格,但无法达到目的。

提前感谢你

2 个答案:

答案 0 :(得分:1)

select * from entry_table inner join students_details on entry_table.id=students_details.id order by entry.student_id asc;

答案 1 :(得分:0)

首先应该正确连接表格。

$query = "SELECT sd.student_name, et.s_name FROM Student_details AS sd LEFT JOIN 
entry_table AS et ON et.user_id = sd.user_id LEFT JOIN 
user_login AS ul ON ul.user_id = sd.user_id 
WHERE et.s_name = 'merit'
ORDER BY et.s_name DESC 
UNION ALL 
SELECT sd.student_name, et.s_name FROM Student_details AS sd LEFT JOIN 
entry_table AS et ON et.user_id = sd.user_id LEFT JOIN 
user_login AS ul ON ul.user_id = sd.user_id 
WHERE et.s_name = 'need'
ORDER BY et.s_name ASC"

如果您需要一个列表,则不需要分组,只要您不需要任何字段或唯一行上的计数。 这就是我的头脑,也许我没有测试它的技巧,但也许给你一个想法。 我无法在你的桌子上看到比率字段。

使用Join代替连接表的位置,更有意义并提高查询性能。 下一次,放入SQL表代码,对于给出更好的响应更有用。

抱歉我的英文!!!