我的表描述如下
**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字段中。
我的下一步是构建一个所有申请某个奖学金的学生的排序列表,例如:“scholarship1”。
此列表还应显示学生的姓名( 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";请帮助按类型问题进行排序。此外,上面的查询有助于连接表,但不能达到目的。
提前感谢你
发布于 2013-11-27 19:20:38
select * from entry_table inner join students_details on entry_table.id=students_details.id order by entry.student_id asc;发布于 2013-11-27 19:32:29
首先,你应该正确地连接表。
$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"如果你需要一个列表,你不需要分组,只要你不需要任何字段或唯一行的计数。这就是我脑海中的想法,也许是我没有测试过的技巧,但也许会给你一个想法。我看不到表上的ratio字段。
在连接表的位置使用Join会更有意义,并且可以提高查询性能。下次放SQL表代码,会更有用,能给出更好的响应。
对不起,我的英语!
https://stackoverflow.com/questions/20240807
复制相似问题