2012-10-09 32 views
0

我是一个完整的SQL初学者。我正在使用查询数据库的程序,然后处理结果。默认查询是:SQL:查询整个数据库

SELECT * 
FROM data, 
    questions, 
    users 
where users.U_Id = data.Subj_Id 
    and data.Subj_Id between 1 and 10 
    and data.Q_Id = questions.Q_Id 
    and questions.Q_Id between 1 and 10 
order by Subj_Id; 

我想它来查询每个Subj_IdQ_Id。我不知道有多少,不同的科目有不同数量的问题。我应该如何改变上述查询?

+0

请提供样本数据和所需的输出。 – RedFilter

回答

4

您可以像这样重写上述查询。

select * 
from 
    data 
     inner join 
    users on users.U_Id = data.Subj_Id 
     inner join 
    questions on data.Q_Id = questions.Q_Id 
where data.Subj_Id between 1 and 10 
and questions.Q_Id between 1 and 10 
order by Subj_Id; 

这使得通过从数据上的过滤器中分离表格之间的连接更加清楚。 所以要查询整个数据库,你只要从上面取下where条款等

select * 
from 
    data 
     inner join 
    users on users.U_Id = data.Subj_Id 
     inner join 
    questions on data.Q_Id = questions.Q_Id 
order by Subj_Id; 
+0

知道了!谢谢。 “内连接”是什么意思? –

+3

http://en.wikipedia.org/wiki/Join_(SQL) – podiluska