簡體   English   中英

Android : SQLITE 選擇查詢

[英]Android : SQLITE Select Query

我有一張student_fee表,其中的列是:

  • id_fee
  • id_student
  • student_name
  • fee_month

在這里,我根據學生每月支付的學費插入數據。 由此我可以很容易地查詢哪些學生支付了他們的月費,假設一月的費用通過 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不清楚)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM