Avatar billede hybrid Nybegynder
05. maj 2001 - 10:49 Der er 4 kommentarer og
1 løsning

Survey forespørgsels fejl :-(


Nedenunder ses to forespørgsler. Mit problem er at min SQL forespørgsel virker fint, hvorimod kan jeg ikke få Access forespørgslen til at virke. Access forespørgslen viser ikke poster hvor SurveyQuestionType er tekst fordi de ikke har SurveyChoices tilknyttet. Hvad skal jeg gøre anderledes?
På forhånd tak.

SQL 7.0::
SELECT SS.ID AS [SectionID], SS.SectionName, SS.SectionOrder,
SQ.ID AS [QuestionID], SQ.QuestionOrder, SQC.ChoiceOrder,
SQC.ChoiceID, SQT.Value, SS.SectionDescription, SQ.Question, SC.ChoiceDescription
FROM Survey S
INNER JOIN SurveySection SS ON S.ID = SS.SurveyID
INNER JOIN SurveyQuestion SQ ON SS.ID = SQ.SectionID
LEFT OUTER JOIN SurveyQuestionChoice SQC ON SQ.ID = SQC.QuestionID
LEFT OUTER JOIN SurveyChoice SC ON SQC.ChoiceID = SC.ID
INNER JOIN SurveyQuestionType SQT ON SQ.QuestionTypeID = SQT.ID
WHERE S.ID = 6
ORDER BY SS.SectionOrder, SQ.QuestionOrder, SQC.ChoiceOrder


Access::
SELECT SurveySection.ID AS SectionID, SurveySection.SectionName, SurveySection.SectionOrder, SurveyQuestion.ID AS QuestionID, SurveyQuestion.QuestionOrder, SurveyQuestionChoice.ChoiceOrder, SurveyQuestionChoice.ChoiceID, SurveyQuestionType.Value, SurveySection.SectionDescription, SurveyQuestion.Question, SurveyChoice.ChoiceDescription
FROM Survey INNER JOIN (SurveySection INNER JOIN (SurveyQuestionType RIGHT JOIN (SurveyQuestion INNER JOIN (SurveyChoice INNER JOIN SurveyQuestionChoice ON SurveyChoice.ID = SurveyQuestionChoice.ChoiceID) ON SurveyQuestion.ID = SurveyQuestionChoice.QuestionID) ON SurveyQuestionType.ID = SurveyQuestion.QuestionTypeID) ON SurveySection.ID = SurveyQuestion.SectionID) ON Survey.ID = SurveySection.SurveyID
WHERE (((Survey.ID)=6))
ORDER BY SurveySection.SectionOrder, SurveyQuestion.QuestionOrder, SurveyQuestionChoice.ChoiceOrder
05. maj 2001 - 19:32 #1
Argh, så hardcore er jeg ikke til ren SQL, at jeg lige kan gennemskue det. Har du mulighed for at maile en Access-database med de 6 tabeller (helst med lidt data i)?
(tj@makeiteasy.dk)

/Thomas
Avatar billede proaccess Nybegynder
05. maj 2001 - 20:44 #2
Dit problem ligger i dine joins. Access kan ikke håndtere flere typer joins i samme forespørgsel. Derfor vil jeg råde dig til at forsøge at kæde hele din forespørgsel sammen med LEFT JOIN, og så bruge NOT NULL til at tjekke om værdier eksisterer i begge tabeller.

Du vil også kunne bruge \"forkortelserne\" i Access, ved at bruge: FROM Survey AS S LEFT .. osv
Avatar billede terry Ekspert
05. maj 2001 - 20:55 #3
This is maybe not the answer your looking for, but why not create your query as a VIEW in SQL, without the WHERE. Then link your VIEW in Access.
You can then make a query now inlcluding your WHERE clause?
Access is rather slow when joining tables so this method will have performance benefits if there are lots of rows in your tables.

Terry
Avatar billede proaccess Nybegynder
05. maj 2001 - 21:04 #4
SELECT SS.ID AS SectionID, SS.SectionName, SS.SectionOrder, SQ.ID AS QuestionID, SQ.QuestionOrder, SQC.ChoiceOrder, SQC.ChoiceID, SQT.Value, SS.SectionDescription, SQ.Question, SC.ChoiceDescription
FROM ((((Survey AS S LEFT JOIN SurveySection AS SS ON S.ID = SS.ID) LEFT JOIN SurveyQuestion AS SQ ON SS.ID = SQ.SectionID) LEFT JOIN SurveyQuestionChoice AS SQC ON SQ.ID = SQC.QuestionID) LEFT JOIN SurveyChoice AS SC ON SQC.ChoiceID = SC.ID) LEFT JOIN SurveyQuestionType AS SQT ON SQ.QuestionTypeID = SQT.ID
WHERE (((S.ID)=6))
ORDER BY SS.SectionOrder, SQ.QuestionOrder, SQC.ChoiceOrder;
09. maj 2001 - 08:37 #5
Virkede det?
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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