Avatar billede pelskee Nybegynder
06. oktober 2005 - 08:37 Der er 7 kommentarer og
1 løsning

SQL fejl med Ambiguous

jeg har nedenstående sql men får fejl. fejlen er indsat under sql. Er der nogen der ved hvorfor ?

"SELECT *  FROM dbo.tblInjury, dbo.tblEmployee  WHERE dbo.tblInjury.CivilRegistrationNumber = dbo.tblEmployee.CivilRegistrationNumber AND (DateOfInjury between '" & ConvertToSqlDate(Request.Querystring("startdate")) & "' AND '" & ConvertToSqlDate(Request.Querystring("enddate")) & "') AND (SickDays between '" & (Request.Querystring("min")) & "' AND '" & (Request.Querystring("max")) & "') "

fejl:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC SQL Server Driver][SQL Server]Ambiguous column name 'CivilRegistrationNumber'.

/reports/include/injury_occupationalinjury.asp, line 50
Avatar billede kalp Novice
06. oktober 2005 - 08:43 #1
mener at det betyder din kolonne CivilRegistrationNumber er defineret 2 steder
Avatar billede arne_v Ekspert
06. oktober 2005 - 08:44 #2
prøv og erstat * med en liste over de felter du vil have ud
Avatar billede pelskee Nybegynder
06. oktober 2005 - 09:10 #3
CivilRegistrationNumber findes i begge tabeller. Jeg har forsøgt at sætte de værdier ind jeg skal bruge, men det virker heller ikke. Burde den ikke være ok når jeg skriver:
dbo.tblInjury.CivilRegistrationNumber = dbo.tblEmployee.CivilRegistrationNumber


tsk_sql = "SELECT dbo.tblInjury.DateOfInjury,dbo.tblInjury.injurynatureID,dbo.tblInjury.injurypartID,dbo.tblEmployee.jobpositionID,dbo.tblEmployee.nationalityID,dbo.tblEmployee.jobtypeID,dbo.tblEmployee.vesselterminalID,dbo.tblEmployee.CivilRegistrationNumber  FROM dbo.tblInjury, dbo.tblEmployee  WHERE dbo.tblInjury.CivilRegistrationNumber = dbo.tblEmployee.CivilRegistrationNumber AND  (DateOfInjury between '" & ConvertToSqlDate(Request.Querystring("startdate")) & "' AND '" & ConvertToSqlDate(Request.Querystring("enddate")) & "') AND (SickDays between '" & (Request.Querystring("min")) & "' AND '" & (Request.Querystring("max")) & "') "
Avatar billede arne_v Ekspert
06. oktober 2005 - 09:15 #4
jo din WHERE ser OK ud og det var derfor jeg tænkte på SELECT listen selvom
jeg faktisk ikke mener at det plejer at give problemer
Avatar billede pelskee Nybegynder
11. oktober 2005 - 22:43 #5
det var underligt. betyder det så at jeg skal omstrukturere databasen eller er der nogen anden løsning
Avatar billede pelskee Nybegynder
11. oktober 2005 - 22:47 #6
mit recordsæt:

tsk_sql = "SELECT *  WHERE dbo.tblInjury.CivilRegistrationNumber = dbo.tblEmployee.CivilRegistrationNumber AND  (DateOfInjury between '" & ConvertToSqlDate(Request.Querystring("startdate")) & "' AND '" & ConvertToSqlDate(Request.Querystring("enddate")) & "') AND (SickDays between '" & (Request.Querystring("min")) & "' AND '" & (Request.Querystring("max")) & "') "

If Request.QueryString("vesselterminal")<>"" Then
tsk_sql = tsk_sql & "AND vesselterminalID = " & Request.QueryString("vesselterminal") & " "
End if
If Request.QueryString("jobposition")<>"" Then
tsk_sql = tsk_sql & "AND jobpositionID = " & Request.QueryString("jobposition") & " "
End if
If Request.QueryString("injuryplace")<>"" Then
tsk_sql = tsk_sql & "AND injuryplaceID = " & Request.QueryString("injuryplace") & " "
End if
If Request.QueryString("injurynature")<>"" Then
tsk_sql = tsk_sql & "AND injurynatureID = " & Request.QueryString("injurynature") & " "
End if
If Request.QueryString("injurypart")<>"" Then
tsk_sql = tsk_sql & "AND injurypartID = " & Request.QueryString("injurypart") & " "
End if
tsk_sql = tsk_sql & "ORDER BY " & Request.QueryString("orderby") & " ASC"

'response.write tsk_sql
rsResults.Source = tsk_sql
Avatar billede pelskee Nybegynder
11. oktober 2005 - 22:48 #7
så skriver den pludselig:

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC SQL Server Driver][SQL Server]The column prefix 'tblInjury' does not match with a table name or alias name used in the query.

/reports/include/injury_occupationalinjury.asp, line 50
Avatar billede pelskee Nybegynder
12. oktober 2005 - 01:20 #8
jeg fik bikset mig frem til en løsning:

<%
Dim rsResults
Dim rsResults_numRows

Set rsResults = Server.CreateObject("ADODB.Recordset")
rsResults.ActiveConnection = MM_claims_conn_STRING
tsk_sql = "SELECT *  FROM dbo.tblInjury LEFT JOIN dbo.tblEmployee ON dbo.tblInjury.CivilRegistrationNumber = dbo.tblEmployee.CivilRegistrationNumberE "

If Request.QueryString("vesselterminal")<>"" Then
tsk_sql = tsk_sql & "AND vesselterminalID = " & Request.QueryString("vesselterminal") & " "
End if
If Request.QueryString("jobposition")<>"" Then
tsk_sql = tsk_sql & "AND jobpositionID = " & Request.QueryString("jobposition") & " "
End if

tsk_sql = tsk_sql & "WHERE (DateOfInjury between '" & ConvertToSqlDate(Request.Querystring("startdate")) & "' AND '" & ConvertToSqlDate(Request.Querystring("enddate")) & "') "


If Request.QueryString("min")<>"0" Then
tsk_sql = tsk_sql & "AND (SickDays between '" & (Request.Querystring("min")) & "' AND '" & (Request.Querystring("max")) & "') "
Else
If Request.QueryString("max")<>"999" Then
tsk_sql = tsk_sql & "AND (SickDays between '" & (Request.Querystring("min")) & "' AND '" & (Request.Querystring("max")) & "') "
End if
End if





If Request.QueryString("injuryplace")<>"" Then
tsk_sql = tsk_sql & "AND injuryplaceID = " & Request.QueryString("injuryplace") & " "
End if
If Request.QueryString("injurynature")<>"" Then
tsk_sql = tsk_sql & "AND injurynatureID = " & Request.QueryString("injurynature") & " "
End if
If Request.QueryString("injurypart")<>"" Then
tsk_sql = tsk_sql & "AND injurypartID = " & Request.QueryString("injurypart") & " "
End if
tsk_sql = tsk_sql & "ORDER BY " & Request.QueryString("orderby") & " ASC"

'response.write tsk_sql
rsResults.Source = tsk_sql

rsResults.CursorType = 0
rsResults.CursorLocation = 2
rsResults.LockType = 1
rsResults.Open()

rsResults_numRows = 0
%>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester