Android:SQLITE Select Query

スーラヴ・ダス

student_fee列がどこにあるかを示すテーブルが1つあります。

  • id_fee
  • id_student
  • student_name
  • fee_month

ここでは、毎月の授業料を支払った学生に基づいたデータを挿入しています。これから、どの学生が月額料金を支払ったかを簡単に照会できます。1月の料金をQuery Like:Select * From student_fee Where fee_month = "January";

しかし、1月だけに月額料金を支払わなかった学生を検索するにはどうすればよいですか?

パトリック・アートナー

通常、学生の名前を何度も何度も保存しないように、正規化されたデータベーステーブルが必要です。

<!-- 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についてはよくわかりません)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事