2017-12-29 31 views
-1

私は列があるstudent_feeの1台持っている:ここで私はに基づいてデータを挿入していますアンドロイド:SQLiteのクエリを選択し

  • id_fee
  • id_student
  • student_name
  • fee_month

を毎月の授業料支払いの学生。 これは簡単にどの学生が毎月の料金を支払ったかを照会することができます。Select * From student_fee Where fee_month = "January";

しかし、どの学生が1月にのみ月額料金を支払っていないかを調べるにはどうすればよいですか? normaly

+0

'student_feeから選択してくださいfee_month!=" January "'これは? – Greggz

+0

「NOT EXISTS」はSQLの基本を知っていますか? – Selvin

+0

@Greggz "!="は "="と同じ結果を返します。 –

答えて

0

あなたは何度も何度も繰り返し生徒の名前を格納避けるために正規化されたデータベーステーブルを持っている必要があります。

<!-- sql --> 
CREATE TABLE students (id INTEGER, name varchar(60)); 

INSERT INTO students (id , name) VALUES (1, 'stud_1'); 
INSERT INTO students (id , name) VALUES (2, 'stud_2'); 
INSERT INTO students (id , name) VALUES (3, 'stud_3'); 
INSERT INTO students (id , name) VALUES (4, 'stud_4'); 
INSERT INTO students (id , name) VALUES (5, 'stud_5'); 

CREATE TABLE student_fee (id INTEGER, studentId INTEGER, month varchar(20)); 

INSERT INTO student_fee (id , studentId , month) VALUES (1, 1, 'january'); 
INSERT INTO student_fee (id , studentId , month) VALUES (2, 2, 'january'); 
INSERT INTO student_fee (id , studentId , month) VALUES (4, 2, 'february'); 
INSERT INTO student_fee (id , studentId , month) VALUES (5, 3, 'february'); 
INSERT INTO student_fee (id , studentId , month) VALUES (6, 4, 'february'); 

をそして、あなたがそうのようにそれを照会します:

select * 
from students 
where not exists (
    select 1 
    from student_fee 
    where students.id = studentid 
    and month = 'january') 

出力:

id name 
3 stud_3 
4 stud_4 
5 stud_5 

(SQL構文はmysql、sqliteについてはわかりません)