Connecting Tech Pros Worldwide Forums | Help | Site Map

Query problem

MrMancunian's Avatar
Expert
 
Join Date: Jul 2008
Location: Utrecht, The Netherlands
Posts: 283
#1: Jul 29 '08
Hi,

I'm using the following query to (duh!) query my database. Now, I changed from Access 2003 to SQL Server 2005. It returns two errors and I can't find out why it does that.

The errors are:
Msg 195, Level 15, State 10, Line 1
'FIRST' is not a recognized built-in function name.
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near 'tblAanvraag'.


Here's my query:

Expand|Select|Wrap|Line Numbers
  1. SELECT DISTINCT [tblAanvraag.AanvraagID] AS Aanvraagnummer, [tblAanvraag.PA-Nummer] AS [PA-Nummer], ([tblMedewerker.MedewerkerAchternaam]+', '+[tblMedewerker.MedewerkerVoornaam]+' '+[tblMedewerker.MedewerkerTussenvoegsel]) AS Aanvrager, [tblAanvraag.Aanvraagdatum] AS Aanvraagdatum, FIRST(tblMoleculair.MoleculairKorteNaam) AS Vraagstelling, [tblStatus.Status] AS Status FROM ((tblAanvraag INNER JOIN tblMedewerker ON tblAanvraag.AanvragerID = tblMedewerker.MedewerkerID) INNER JOIN tblStatus ON tblAanvraag.StatusCode = tblStatus.StatusCode) INNER JOIN (tblAangevraagdMoleculair INNER JOIN tblMoleculair ON tblAangevraagdMoleculair.MoleculairID = tblMoleculair.MoleculairID) ON tblAanvraag.AanvraagID = tblAangevraagdMoleculair.AanvraagID GROUP BY [tblAanvraag.AanvraagID], [tblAanvraag.PA-Nummer], ([tblMedewerker.MedewerkerAchternaam]+', '+[tblMedewerker.MedewerkerVoornaam]+' '+[tblMedewerker.MedewerkerTussenvoegsel]), [tblAanvraag.Aanvraagdatum], [tblStatus.Status], tblAanvraag.MoleculairePathologie, tblAanvraag.StatusCode HAVING (((tblAanvraag.MoleculairePathologie)=True) AND ((tblAanvraag.StatusCode)<4))
Can anyone help me with this one? It would be greatly appeciated!

Cheers,

Steven

Lives Here
 
Join Date: Sep 2006
Posts: 12,070
#2: Jul 29 '08

re: Query problem


The part

Expand|Select|Wrap|Line Numbers
  1.  INNER JOIN (tblAangevraagdMoleculair 
  2.           INNER JOIN tblMoleculair ON tblAangevraagdMoleculair.MoleculairID = tblMoleculair.MoleculairID) 
  3. ON tblAanvraag.AanvraagID = tblAangevraagdMoleculair.AanvraagID 
Looks suspicious to me.

Did you mean
Expand|Select|Wrap|Line Numbers
  1.  FROM tblAanvraag INNER JOIN tblMedewerker ON tblAanvraag.AanvragerID = tblMedewerker.MedewerkerID 
  2.        INNER JOIN tblStatus ON tblAanvraag.StatusCode = tblStatus.StatusCode 
  3.        INNER JOIN tblAangevraagdMoleculair ON tblAanvraag.AanvraagID = tblAangevraagdMoleculair.AanvraagID 
  4.           INNER JOIN tblMoleculair ON tblAangevraagdMoleculair.MoleculairID = tblMoleculair.MoleculairID 
instead?
MrMancunian's Avatar
Expert
 
Join Date: Jul 2008
Location: Utrecht, The Netherlands
Posts: 283
#3: Jul 29 '08

re: Query problem


No, I think that part works fine...
Lives Here
 
Join Date: Sep 2006
Posts: 12,070
#4: Jul 29 '08

re: Query problem


Quote:

Originally Posted by MrMancunian

No, I think that part works fine...

Silly me. That First function is not supported in SQL 2000. Is that what you are using? You'd need to use TOP.
MrMancunian's Avatar
Expert
 
Join Date: Jul 2008
Location: Utrecht, The Netherlands
Posts: 283
#5: Jul 29 '08

re: Query problem


Quote:

Originally Posted by r035198x

Silly me. That First function is not supported in SQL 2000. Is that what you are using? You'd need to use TOP.

Ok, how do I use TOP in this query? It tried some things but it keeps telling me it's incorrect syntax.
Lives Here
 
Join Date: Sep 2006
Posts: 12,070
#6: Jul 29 '08

re: Query problem


Quote:

Originally Posted by MrMancunian

Ok, how do I use TOP in this query? It tried some things but it keeps telling me it's incorrect syntax.

If you are solving the top rows per group problem then I suggest you look at this article.
MrMancunian's Avatar
Expert
 
Join Date: Jul 2008
Location: Utrecht, The Netherlands
Posts: 283
#7: Jul 30 '08

re: Query problem


Quote:

Originally Posted by r035198x

If you are solving the top rows per group problem then I suggest you look at this article.

Ok, I changed my query to a working one. Except for one thing. The TOP-part doesn't work the way I want to. Let me explain what it should do. The system I built is a request application for Pathologists. They can request molecular techniques on a tissue sample. More than one technique per sample can be requested. When they request multiple techniques, there should be more than one row in the tblMoleculair selected. As these are all in the same family, it doesn't matter which of the selected tecnhiques get picked. The only problem is that, regardless the chosen technique, it just returns the first name in the table, period. How can I change this, using the following query:

Expand|Select|Wrap|Line Numbers
  1. SELECT DISTINCT 
  2. tblAanvraag.AanvraagID AS Aanvraagnummer,
  3. [PA-Nummer], 
  4. (tblMedewerker.MedewerkerAchternaam+', '+tblMedewerker.MedewerkerVoornaam+' '+tblMedewerker.MedewerkerTussenvoegsel) AS Aanvrager, 
  5. tblAanvraag.Aanvraagdatum AS Aanvraagdatum, 
  6. (SELECT TOP (1) MoleculairKorteNaam FROM tblMoleculair) AS Vraagstelling, 
  7. tblStatus.Status AS Status 
  8. FROM tblAanvraag 
  9. INNER JOIN tblMedewerker ON tblAanvraag.AanvragerID = tblMedewerker.MedewerkerID 
  10. INNER JOIN tblStatus ON tblAanvraag.StatusCode = tblStatus.StatusCode 
  11. INNER JOIN tblAangevraagdMoleculair ON tblAanvraag.AanvraagID = tblAangevraagdMoleculair.AanvraagID 
  12. INNER JOIN tblMoleculair ON tblAangevraagdMoleculair.MoleculairID = tblMoleculair.MoleculairID 
  13. GROUP BY tblAanvraag.AanvraagID, tblAanvraag.[PA-Nummer], 
  14. (tblMedewerker.MedewerkerAchternaam+', '+tblMedewerker.MedewerkerVoornaam+' '+tblMedewerker.MedewerkerTussenvoegsel), 
  15. tblAanvraag.Aanvraagdatum, tblStatus.Status, tblAanvraag.MoleculairePathologie, tblAanvraag.StatusCode 
  16. HAVING tblAanvraag.MoleculairePathologie=1 
  17. AND tblAanvraag.StatusCode<4
MrMancunian's Avatar
Expert
 
Join Date: Jul 2008
Location: Utrecht, The Netherlands
Posts: 283
#8: Jul 30 '08

re: Query problem


Dont bother, I already found the solution, using another method.

Expand|Select|Wrap|Line Numbers
  1. SELECT DISTINCT 
  2. tblAanvraag.AanvraagID AS Aanvraagnummer,
  3. [PA-Nummer], 
  4. (tblMedewerker.MedewerkerAchternaam+', '+tblMedewerker.MedewerkerVoornaam+' '+tblMedewerker.MedewerkerTussenvoegsel) AS Aanvrager, 
  5. tblAanvraag.Aanvraagdatum AS Aanvraagdatum, 
  6. MAX(tblMoleculair.MoleculairKorteNaam) AS Vraagstelling, 
  7. tblStatus.Status AS Status 
  8. FROM tblAanvraag 
  9. INNER JOIN tblMedewerker ON tblAanvraag.AanvragerID = tblMedewerker.MedewerkerID 
  10. INNER JOIN tblStatus ON tblAanvraag.StatusCode = tblStatus.StatusCode 
  11. INNER JOIN tblAangevraagdMoleculair ON tblAanvraag.AanvraagID = tblAangevraagdMoleculair.AanvraagID 
  12. INNER JOIN tblMoleculair ON tblAangevraagdMoleculair.MoleculairID = tblMoleculair.MoleculairID
  13. WHERE tblAanvraag.AanvragerID=85 
  14. GROUP BY tblAanvraag.AanvraagID, tblAanvraag.[PA-Nummer], 
  15. (tblMedewerker.MedewerkerAchternaam+', '+tblMedewerker.MedewerkerVoornaam+' '+tblMedewerker.MedewerkerTussenvoegsel), 
  16. tblAanvraag.Aanvraagdatum, tblStatus.Status, tblAanvraag.MoleculairePathologie, tblAanvraag.StatusCode 
  17. HAVING tblAanvraag.MoleculairePathologie=1
  18. ORDER BY tblAanvraag.AanvraagID DESC
Thnx for all the help! :)
Reply