2012-09-05 50 views
0

我有两个表设置。一个用于学生信息,一个用于学生/班级上市。我使用MSSQL 2008 R2的sqlsrv插件编写了PHP代码。如何将多个查询组合到一个数组中?

Student ID 
Class Code 

Student ID 
First Name 
Last Name 

我需要从班级中选择所有学生,但按姓氏排序。

SELECT student_id FROM table1 WHERE class_code LIKE '402843' 
$students = SELECT last_name, first_name FROM table2 WHERE student_id LIKE 'all results of first query' 

现在我可以选择所有的学生并显示所有的信息;但是,我无法按姓氏排序。我相信这是可能的,但看到第一个查询将返回一个数组,我需要第二个查询返回一个数组。

任何帮助将不胜感激。

回答

1

使用子查询IN

SELECT last_name, first_name FROM table2 WHERE student_id IN (SELECT student_id FROM table1 WHERE class_code='402843') ORDER BY last_name ASC 
+0

这就像一个魅力。非常感谢...'in'对我来说是新的,感谢您的帮助!希望我能给你一千个赞扬。 – Fleppar

+0

是否有一个JOIN不起作用的原因? – FilmJ

+0

不,但它更复杂,我不喜欢加入,尽可能简化,我会给他+1 :) –

3

看看加入在SQL做这一切在你的查询,而不是在PHP ...

使用你的例子和代码的目的,命名表如下

ClassCodeTable 
    Student ID 
    Class Code 

StudentInfoTable 
    Student ID 
    First Name 
    Last Name 

然后将查询看起来像

SELECT SI.last_name, SI.first_name FROM StudentInfoTable SI JOIN ClassCodeTable CC on CC.student_id=SI.student_id WHERE CC.class_code LIKE '402843' ORDER BY SI.last_name ASC 
相关问题