2011-12-16 42 views
0

いくつかのコードでスタックされています。私は特定のコースに登録されているIT学生を表示する必要があります。 これまでの私のコードですが、ITの学生名が表示されますが、登録されているコースの表示に関しては、利用可能なすべてのコースが表示されます。SQLクエリのヘルプ、別名を選択

SELECT DISTINCT s.sid, s.sname, e.ccode 
FROM student s, enrolled e 
WHERE s.programme = 'IT'; 

私はそれがWHERE s.programme = 'IT' 行で行うことだと仮定し、それは私がこれをどのように行うか、e.ccodeに接続doesntの?

+0

これらの2つのテーブルのテーブル構造を共有する必要があります。私たちはあなたと同じようにあなたに精通していません。 –

答えて

2

これはクロス結合です。結果をフィルタリングするためには、いくつかの結合条件が必要です。学生の他の賢明な行は、登録されたテーブルのすべての行に参加します。

SELECT DISTINCT s.sid, s.sname, e.ccode 
FROM student s INNER JOIN enrolled e on s.sid = e.sid 
WHERE s.programme = 'IT'; 

登録されたテーブルに学生IDがあるとします。

SELECT DISTINCT a, b 

あなたは、「私にの明確な価値を与え、bは組み合わせ」、と言っているのか:あなたが言うとき

0
SELECT DISTINCT s.sid, s.sname, e.ccode 
    FROM student s INNER JOIN enrolled e on s.sid = e.sid 
    WHERE s.programme = 'IT';//use inner join 

実際、DISTINCTは基本的に、1列に自分自身を制限するものではありません。 。複数列のUNIQUEインデックスと同じように