2017-12-29 45 views
-1

내가 가진 열은 student_fee의 한 테이블 :안드로이드 : 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 구문은 sqlite에 대해 확실하지 않은 mysql입니다)