학생 이름이있는 SQLite 데이터베이스가 있습니다. 각 학생마다 다른 수업이 있습니다. 나는 학생 성적과 클래스가있는 테이블과 클래스별로 정의하는 테이블이 있습니다. 쿼리를 실행하고 싶습니다. (필자는 OpenOffice에서 편지 병합을 위해 Excel 문서로 사용할 CSV로 저장합니다). 학생의 수학, 학년, 과학, 영어 등의 점수를 기재해야합니다. 그러나 일부 학생들에게는 수학, 과학, 영어 또는 역사 수업이 1 회 이상 있습니다. (예) CASE 문 (및 뷰)을 만들 수 있습니까? 예를 들어 Math_Class_2라는보기에 실제로 나열 할 수있는 Math 클래스가 두 개 이상 있다면?일치하는 필드에 대해 CASE와 SQLITE를 사용하십시오.
2
A
답변
1
아이디어는 SQL을 작업으로 만드는 것이지 그것을위한 것이 아닙니다.
가정하면 세 개의 테이블 :
학생 (StudentNo, StudentName)
클래스 (ClassNo, 클래스 이름)
결과 (ClassNo, StudentNo, 학년)
쿼리는 다음과 같습니다
SELECT StudentName, group_concat(ClassName || "," || Grade)
FROM Student
INNER JOIN Result ON Result.StudentNo=Student.StudentNo
INNER JOIN Class ON Result.ClassNo=Class.ClassNo
GROUP BY Student.Studentno;
(group_concat은 다른 후기 덧셈 SQlite에. 3.7에 존재).
Jimmy,English,70,Algebra,75,Geometry,80
Bob,English,85,Algebra,90
CREATE TABLE [Student] (
[StudentNo] INTEGER NOT NULL PRIMARY KEY,
[StudentName] TEXT NULL
);
INSERT INTO "Student" VALUES(1,'Jimmy');
INSERT INTO "Student" VALUES(2,'Bob');
INSERT INTO "Student" VALUES(3,'Anna');
CREATE TABLE [Class] (
[ClassNo] INTEGER NOT NULL PRIMARY KEY,
[ClassName] TEXT NULL
);
INSERT INTO "Class" VALUES(1,'English');
INSERT INTO "Class" VALUES(2,'Algebra');
INSERT INTO "Class" VALUES(3,'Geometry');
INSERT INTO "Class" VALUES(4,'Pre-Cal');
CREATE TABLE [Result] (
[StudentNo] INTEGER NOT NULL,
[ClassNo] INTEGER NOT NULL,
[Grade] INTEGER NOT NULL,
PRIMARY KEY ([StudentNo],[ClassNo])
);
INSERT INTO "Result" VALUES(1,1,70);
INSERT INTO "Result" VALUES(1,2,75);
INSERT INTO "Result" VALUES(1,3,80);
INSERT INTO "Result" VALUES(2,1,85);
INSERT INTO "Result" VALUES(2,2,90);
INSERT INTO "Result" VALUES(3,4,95);
이 (당신이 당신의 분리 문자를 조정할 수 있습니다) 반환 여기
내가 사용하는 모든 명령의 덤프입니다Anna,Pre-Cal,95
0
내 두 센트 ...
현재 sqlite 데이터베이스를 사용하는 Android 앱을 개발 중입니다. CASE 문을 사용해야하고 이 작동했습니다..
표에는 밀리 초 단위의 시간 빈도 값이있는 열이 있지만 이해하기 쉬운 정보로 표시해야하는 최종 사용자에게는 이것이 사용 된 SQL 문입니다. 명령문을 프로그램 적으로 정리하면 하드 코드되지 않습니다.) : -p
SELECT
case when alarm_time_frequency='0' then 'Not Used'
when alarm_time_frequency='300000' then '5 min'
when alarm_time_frequency='600000' then '10 min'
when alarm_time_frequency='900000' then '15 min'
when alarm_time_frequency='1800000' then '30 min'
when alarm_time_frequency='3600000' then '1 hour'
when alarm_time_frequency='7200000' then '2 hours'
when alarm_time_frequency='10800000' then '3 hours'
when alarm_time_frequency='14400000' then '4 hours'
when alarm_time_frequency='21600000' then '6 hours'
when alarm_time_frequency='28800000' then '8 hours'
when alarm_time_frequency='43200000' then '12 hours'
when alarm_time_frequency='86400000' then '24 hours'
end
as alarm_time_frequency FROM ALARMS
I hope this helps...
관련 문제
- 1. Camel 및 Pascal Case와 일치하는 정규식
- 2. 데이터베이스 필드에 잘못된 URL을 찾으려면 정규식을 사용하십시오.
- 3. 보안 걱정 필드에 대해 숨김
- 4. 필드에 대해 ProtoInclude를 사용 하시겠습니까?
- 5. 여러 필드에 대해 SELECT DISTINCT
- 6. 여러 필드에 대해 mysql 쿼리가 가능합니다.
- 7. Solr은 숫자 필드에 대해 SQL BETWEEN과 동일합니다.
- 8. 부울 유형 필드에 대해 데이터 유형을 선택해야합니까?
- 9. 별도의 ID 필드에 대해 별도의 열이 필요합니까?
- 10. Django - 양식의 외부 필드에 대해 get_FOO_display가 필요합니다.
- 11. Django의 값을 이전 필드에 대해 자동으로 증가시킵니다.
- 12. sqlite를 설치해야합니까?
- 13. Asp.net : 데이터 소스의 쿼리에 대해 정수 필드에 대해 jolly char을 사용하는 방법
- 14. sqlite를 사용하여 android에 정수를 표시합니다.
- 15. SQLite를 사용하여 특정 달 레코드 가져 오기
- 16. SQLite를 Classic ASP와 함께 사용
- 17. sqlite를 postgres 쿼리로 변환
- 18. sqlite를 사용하여 폼 인증
- 19. NSArray에서 SQLite를 사용하는 이유
- 20. sqlite를 사용한 iPhone 현지화?
- 21. ExpressionEngine에서 SQLite를 사용하는 방법
- 22. Safari Sqlite를 사용하는 ActiveRecord
- 23. SQLite를 사용하는 Entity Framework
- 24. WPF에서 SQLite를 사용하는 방법
- 25. SQLiteJDBC가 작동하도록 SQLite를 설치해야합니까?
- 26. SQLite를 장고에서 사용하고 있습니까?
- 27. 많은 Ruby 버전에 대해 매개 변수를 실행하려면 rvm을 사용하십시오.
- 28. fopen() 대신 Sqlite를 사용 하시겠습니까?
- 29. Windows에서 SQLCite를 사용하여 SQLite를 컴파일하십시오.
- 30. SQLite를 Android 저장소로 사용 하시겠습니까?
나는 그곳에서 무슨 의미인지는 모르겠습니다. 몇 가지 기본 테이블 정의와 원하는 출력 예제를 사용할 수 있습니까? – MPelletier
파이썬 해결 방법을 만들었습니다 ... 원하는 바는 아니지만 충분히 가까워졌습니다. 이 경우 문으로 생성 뷰로 다음 코드를 복제 할 수있을 것이다 : 'cursor.execute 커서의 행 ('DISTINCT student_id, COURSE_TITLE, math_class FROM final_grade SELECT') student_id = 행 [0] COURSE_TITLE = [1] student_id == old_student_id : if student_id! = second_round_id : ... write_string = "INSERT INTO math_class_2_2010 ... 행의 [1] final_grade = 2 행 [2]' – Donnied
테이블이 있습니다 : TABLE eoygrades_2010 (student_id INTEGER CHAR (6) NOT NULL, course_title VARCHAR (16), grade INTEGER CHAR (3)); 그리고 표시되지 않은 경우 math 클래스를 표시하기 위해 case 문을 만들려고했습니다. 대신 : 사전 수 지 : 나는 한 줄 에디, 대수학, 90, 기하학, 80 을 인쇄 할 수 있습니다 (80) 에디, 대수학, 90 에디, 기하학, 하나의 수학 수업에 그들을위한 -Cal, 85 ,, – Donnied