2012-08-04 2 views
1

가 나는 SQL 서버 2008 오류 4145

SELECT 
     Stu_info.Id_num, 
     Stu_info.Stu_name, 
     Development_fee.Dvf, 
     Tuition_fee.Acy, 
     Tuition_fee.Tui_fee, 
     Registration_fee.Reg_fee, 
     Form_fill_up_fee.Acy, 
     Form_fill_up_fee.FFF, 
     Examination_fee.E_typ, 
     Examination_fee.Exm_fee, 
     monthly_instal.Instm, 
     monthly_instal.Paid  

FROM 
     [SUIMT].[dbo].[Stu_info], 
     [SUIMT].[dbo].[Development_fee], 
     [SUIMT].[dbo].[Tuition_fee], 
     [SUIMT].[dbo].[Registration_fee], 
     [SUIMT].[dbo].[Form_fill_up_fee], 
     [SUIMT].[dbo].[Examination_fee], 
     [SUIMT].[dbo].[monthly_instal] 
WHERE 
     Development_fee.Id_num, 
     Tuition_fee.Id_num, 
     Registration_fee.Id_num, 
     Form_fill_up_fee.Id_num, 
     Examination_fee.Id_num, 
     monthly_instal.Id_num = Stu_info.Id_num 

SQL

거기에 다음 코드를 사용하지만

"Msg 4145, Level 15, State 1, Line 3 
An expression of non-boolean type specified in a context where a 
condition is expected, near ','". 

당신이 날이 문제를 해결하는 데 도움시겠습니까 말한다 오류가 표시습니까? 나는 그것을 더 쉽게 이해할 수 있도록 예제를 제공해 주셔서 감사하게 생각합니다.

답변

1

달성 할 의미가있는 WHERE 절은 무엇입니까? 이 뜻이야?

WHERE 
     Stu_info.Id_num = Development_fee.Id_num 
    AND Stu_info.Id_num = Tuition_fee.Id_num 
    AND Stu_info.Id_num = Registration_fee.Id_num 
    AND Stu_info.Id_num = Form_fill_up_fee.Id_num 
    AND Stu_info.Id_num = Examination_fee.Id_num 
    AND Stu_info.Id_num = monthly_instal.Id_num 

또한 FROM tableA, TableB, TableC은 매우 오래된 스타일 표기법입니다. AND 또는 OR 아닌 쉼표

+0

예. 맞습니다. 사실이 stackoverflow.com/questions/11808486/sql-server-2008-joining 문제를 해결하려면 다른 방법을 사용하려고했습니다. 그러나 나는 그것이 효과가 없을 것이라고 생각합니다. 내가 뭘해야하는지 말해 줄래? – user1575936

0

분리하여 절) 및 표 별칭을 사용하여 검색어를 더 쉽게 이해하고 읽기 쉽게 만들 수 있습니다.

SELECT 
    stu.Id_num, stu.Stu_name, 
    df.Dvf, 
    tf.Acy, tf.Tui_fee, 
    rf.Reg_fee, 
    ffuf.Acy, ffuf.FFF, 
    ef.E_typ, ef.Exm_fee, 
    mi.Instm, mi.Paid  
FROM 
    [SUIMT].[dbo].[Stu_info] stu 
INNER JOIN 
    [SUIMT].[dbo].[Development_fee] df ON df.Id_num = stu.id_num 
INNER JOIN 
    [SUIMT].[dbo].[Tuition_fee] tf ON tf.Id_num = stu.id_num 
INNER JOIN 
    [SUIMT].[dbo].[Registration_fee] rf ON rf.Id_num = stu.id_num 
INNER JOIN 
    [SUIMT].[dbo].[Form_fill_up_fee] ffuf ON ffuf.Id_num = stu.id_num 
INNER JOIN 
    [SUIMT].[dbo].[Examination_fee] ef ON ef.Id_num = stu.id_num 
INNER JOIN 
    [SUIMT].[dbo].[monthly_instal] mi ON mi.Id_Num = stu.Id_num 

이렇게하면 못생긴 WHERE 절도 필요하지 않습니다 .....

+0

좋아. 사실이 stackoverflow.com/questions/11808486/sql-server-2008-joining 문제를 해결하려면 다른 방법을 사용하려고했습니다. 그러나 나는 그것이 효과가 없을 것이라고 생각합니다. 내가 뭘해야하는지 말해 줄래? – user1575936

0
SELECT Stu_info.Id_num, Stu_info.Stu_name, Development_fee.Dvf, Tuition_fee.Acy, Tuition_fee.Tui_fee, Registration_fee.Reg_fee, Form_fill_up_fee.Acy, Form_fill_up_fee.FFF, Examination_fee.E_typ, Examination_fee.Exm_fee, monthly_instal.Instm, monthly_instal.Paid  
FROM [SUIMT].[dbo].[Stu_info], 
    [SUIMT].[dbo].[Development_fee], 
    [SUIMT].[dbo].[Tuition_fee], 
    [SUIMT].[dbo].[Registration_fee], 
    [SUIMT].[dbo].[Form_fill_up_fee], 
    [SUIMT].[dbo].[Examination_fee], 
    [SUIMT].[dbo].[monthly_instal] 
WHERE Development_fee.Id_num=Tuition_fee.Id_num and 
     Registration_fee.Id_num=Form_fill_up_fee.Id_num and 
     Examination_fee.Id_num=monthly_instal.Id_num and 
     monthly_instal.Id_num=Stu_info.Id_num 
+0

이 문맥에서'Where' 절을 사용하면 어떤 이점이 있습니까? From 부분에서 동일한 지팡이를 수행 할 수 있습니까? –

+0

작동하지만 어떤 값도 반환하지 않습니다! 모든 필드가 비어 있다는 뜻입니다. 사실이 http://stackoverflow.com/questions/11808486/sql-server-2008-joining 문제를 해결하기 위해 나는 대체 방법을 사용하려고했습니다. 그러나 나는 그것이 효과가 없을 것이라고 생각합니다. 내가 뭘해야하는지 말해 줄래? – user1575936

1

당신은 사용해야 적절한 ANSI SQL-92가 가입 구문 (INNER JOIN, LEFT OUTER JOIN 등으로 표준이 JOIN 사용 ANSI-92 ...

SELECT 
    Stu_info.Id_num, Stu_info.Stu_name, Development_fee.Dvf, Tuition_fee.Acy, Tuition_fee.Tui_fee, Registration_fee.Reg_fee, Form_fill_up_fee.Acy, Form_fill_up_fee.FFF, Examination_fee.E_typ, Examination_fee.Exm_fee, monthly_instal.Instm, monthly_instal.Paid  
FROM 
    [SUIMT].[dbo].[Stu_info] 
INNER JOIN 
    [SUIMT].[dbo].[Development_fee] 
    ON Stu_info.Id_num = Development_fee.Id_num 
INNER JOIN 
    [SUIMT].[dbo].[Tuition_fee] 
    ON Stu_info.Id_num = Tuition_fee.Id_num 
INNER JOIN 
    [SUIMT].[dbo].[Registration_fee] 
    ON Stu_info.Id_num = Registration_fee.Id_num 
INNER JOIN 
    [SUIMT].[dbo].[Form_fill_up_fee] 
    ON Stu_info.Id_num = Form_fill_up_fee.Id_num 
INNER JOIN 
    [SUIMT].[dbo].[Examination_fee] 
    ON Stu_info.Id_num = Examination_fee.Id_num 
INNER JOIN 
    [SUIMT].[dbo].[monthly_instal] 
    ON Stu_info.Id_num = monthly_instal.Id_num 
+0

코드를 사용하면 다음과 같은 오류 메시지가 표시됩니다! 메시지 156, 수준 15, 상태 1, 줄 13 키워드 'INNER'근처의 구문이 잘못되었습니다. – user1575936