2012-08-01 3 views
1
)

SQL 쿼리에 문제가있을 수 있습니다. 이 쿼리에서는 4 개의 다른 테이블을 결합합니다.SQL 쿼리 (C#

  • I는 일반 정보 (course_number, course_title) 저장 테이블 courses있다.
  • 직원의 일반 정보가 저장되는 테이블 employees (empnamejob_id)이 있습니다.
  • 직원이 직장을 가지고 있습니다. 직원이 코스를 수강해야합니다. 그가해야하는 과목에 따라 다릅니다. 이 정보는 테이블 job_course (job_idcourse_id)에 저장됩니다.
  • 직원은

가 지금은 어떤 과정 검색 할합니다 (e_idcourse_id로)는 테이블 emp_courses에 저장되는 과정을 완료 한 경우 - 사용자가 검색 버튼을 누를 때 그가 2를 얻어야한다을 다른 결과.

  • 첫 번째 : 여기 당신은 이미이 과정 (이 쿼리가 지금까지 작동)
  • 두 번째를했다 직원 을 볼 수 있습니다 : 여기 당신은 직원이 아직 과정을 필요 을 볼 수 있습니다 . 그래서 나는 그 직원이 가지고있는 직업과 그가 그 과정을 수립해야하는지 확인해야합니다. 또한 아직 완성되지 않은 것들을 갖고 싶습니다.

    OpenDb_Open("select course_number,course_title, empname from course 
    INNER JOIN (job_course INNER JOIN (employee INNER JOIN emp_course 
    ON emp_course.e_id<>employee.e_id) ON job_course.job_id=employee.job_id) 
    ON course.course_id=job_course.course_id 
    where course_number like '" + coursenumber + "'"); 
    

    사람이 좀 도와 주시겠습니까 : 그리고 그 다음은

이입니다 작동하지 않는 쿼리입니까?

+0

가능한 중복 (http://stackoverflow.com/questions/11755326/sql-query-in-c-sharp-program) – adatapost

+0

*이 전율은 * - 연결할하지 않습니다 그런 식으로 입력하십시오; ** 제발 ** coursenumber와 같은 course_number를 사용하고'@ coursenumber'라는 매개 변수를 추가하십시오 –

답변

1

직원이 수행하지 않은 코스.

SELECT * FROM courses 
WHERE course_number IN (
    SELECT course_id FROM job_course 
    WHERE course_id NOT IN (
     SELECT course_id FROM emp_courses 
     WHERE emp_id = {someid} 
    ) AND job_id = (
     SELECT job_id FROM employees 
     WHERE emp_id = {user_input} 
    ) 
) 

어떤 직원이 여전히 코스를 수강해야하는지.

SELECT emp_name FROM employees 
WHERE emp_id NOT IN (
    SELECT emp_id FROM emp_courses 
    WHERE course_id = {user_input} 
) 

위의 변형.

SELECT emp_name FROM employees 
WHERE emp_id NOT IN (
    SELECT emp_id FROM emp_courses 
    WHERE course_id = (
     SELECT course_id FROM courses 
     WHERE course_number = {user_input} 
    ) 
) 
[C# 프로그램에서 SQL 쿼리]의
+0

"someid"로 무엇을 의미합니까 ... 귀하의 질의에 나는 저장된 course_numbers를 비교할 수있는 가능성이 없습니다 (내가 언급 했어야합니다 : 사용자는 cours_number를 입력 할 수 있으며 검색 버튼을 누르면 문자열이 저장됩니다 : string coursenumber = this.textBox1.Text;) – Meilenea

+0

입력 된 값이 그 대신에 사용됩니다. 그것이 공급되어야하기 때문에 나는 아무것도 넣을 수 없었다. 다른 각도에서 데이터베이스를 쿼리하는 방법에는 여러 가지가 있지만 두 번째 쿼리는 정확히 찾고 있다고 생각합니다. 거기에 사용자 입력을 연결하고 특정 과정을 밟지 않은 직원을 확보하십시오. –

+0

아하지만 course_id course_number되지 않습니다 .. 그래서 나는 또한 코스 테이블이 필요 ...하지만 게다가 당신의 쿼리는 좋아 보인다! – Meilenea