Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
| Author |
Topic |
|
fionama
Starting Member
6 Posts |
Posted - 2007-12-20 : 08:45:56
|
| Hi all,I am working from a database containing sets of questions and answers relating to maternity episodes. The answer tables are broken up into two tables, freetext answers and standard drop-down answers. The questions relating to these answers are held in the same table, MAT_QUESTIONS.When I want to view the freetext answers and questions for a certain episode (based on incidentid), the following code works..SELECT P.SURNAME, P.FIRNAME,QS.ID,QS.QUESTIONTEXT, FA.ANSWERTEXTFROM MAT_FREEANSWERS FA, MAT_QUESTIONS QS,MAT_INCIDENTS I, MAT_DELIVERY D,PASMAIN PWHERE FA.QUESTIONID=QS.IDAND FA.INCIDENTID=I.INCIDENTIDAND I.INCIDENTID=D.INCIDENTIDAND D.MOTHER_PAS_NO=P.PAS_NOAND D.BIRTH_DATE BETWEEN '2007-01-01 00:00:00' AND '2007-01-31 23:59:59'AND QS.QUESTIONNAIREID=2AND FA.INCIDENTID=4501and if I want to view the answers to the standard drop down questions, I use the following code...select P.SURNAME, P.FIRNAME,QS.ID,QS.QUESTIONTEXT, A.ANSWERfrom MAT_INCIDENTS I, MAT_DELIVERY D, PASMAIN P,MAT_QUESTIONNAIRE Q, MAT_QUESTIONNAIREINCIDENTS QI, MAT_QUESTIONS QS,MAT_ANSWERS A, MAT_INCIDENTANSWERS IAWHERE I.INCIDENTID=D.INCIDENTIDAND I.INCIDENTID=QI.INCIDENTIDAND D.INCIDENTID=IA.INCIDENTIDAND D.MOTHER_PAS_NO=P.PAS_NOAND Q.ID=QI.QUESTIONNAIREIDAND QI.QUESTIONNAIREID=QS.QUESTIONNAIREIDAND QS.ID=A.QUESTIONIDAND A.ID=IA.ANSWERIDAND D.BIRTH_DATE BETWEEN '2007-01-01 00:00:00' AND '2007-01-31 23:59:59'AND Q.ID=2AND I.INCIDENTID=4501However, I would like to join the two together, as I would like to see a list of all questions and answers posed to a particular patient. But, as there are so many tables in common, I'm having difficulty doing this. Would appreciate any help!Fiona |
|
|
SwePeso
Patron Saint of Lost Yaks
30421 Posts |
Posted - 2007-12-20 : 08:54:29
|
Use "UNION" or "UNION ALL" to combine the two queries.And please learn ANSI JOIN style. E 12°55'05.25"N 56°04'39.16" |
 |
|
|
jezemine
Master Smack Fu Yak Hacker
2886 Posts |
Posted - 2007-12-20 : 08:55:02
|
try UNION ALLselect 1,2,3union allselect 5,6,7 elsasoft.org |
 |
|
|
SwePeso
Patron Saint of Lost Yaks
30421 Posts |
Posted - 2007-12-20 : 09:01:01
|
[code]SELECT P.SURNAME, P.FIRNAME, QS.ID, QS.QUESTIONTEXT, FA.ANSWERTEXTFROM MAT_FREEANSWERS AS FAINNER JOIN MAT_QUESTIONS AS QS ON QS.ID = FA.QUESTIONIDINNER JOIN MAT_INCIDENTS AS I ON I.INCIDENTID = FA.INCIDENTIDINNER JOIN MAT_DELIVERY AS D ON D.INCIDENTID = I.INCIDENTIDINNER JOIN PASMAIN AS P ON P.PAS_NO = D.MOTHER_PAS_NOWHERE D.BIRTH_DATE >= '2007-01-01' AND D.BIRTH_DATE < '2007-02-01' AND QS.QUESTIONNAIREID = 2 AND FA.INCIDENTID = 4501SELECT P.SURNAME, P.FIRNAME, QS.ID, QS.QUESTIONTEXT, A.ANSWERFROM MAT_INCIDENTS AS IINNER JOIN MAT_DELIVERY AS D ON D.INCIDENTID = I.INCIDENTIDINNER JOIN PASMAIN AS P ON P.PAS_NO = D.MOTHER_PAS_NOINNER JOIN MAT_QUESTIONNAIREINCIDENTS AS QI ON QI.INCIDENTID = I.INCIDENTIDINNER JOIN MAT_QUESTIONNAIRE AS Q ON Q.ID = QI.QUESTIONNAIREIDINNER JOIN MAT_QUESTIONS AS QS ON QS.QUESTIONNAIREID = QI.QUESTIONNAIREIDINNER JOIN MAT_ANSWERS AS A ON A.QUESTIONID = QS.IDINNER JOIN MAT_INCIDENTANSWERS AS IA ON IA.INCIDENTID = D.INCIDENTIDWHERE A.ID = IA.ANSWERID AND D.BIRTH_DATE >= '2007-01-01' AND D.BIRTH_DATE < '2007-02-01' AND Q.ID = 2 AND I.INCIDENTID = 4501[/code] E 12°55'05.25"N 56°04'39.16" |
 |
|
|
fionama
Starting Member
6 Posts |
Posted - 2007-12-20 : 09:43:51
|
| For some reason, it didn't like the aliases, so I removed them. The individual queries work fine separately, but when I use union, I get an error..."Error: Dynamic SQL Error. SQL error code = -104. Invalid command. Data type unknown. (State:HY000, Native Code: FFFFFF98)"SELECT PASMAIN.SURNAME, PASMAIN.FIRNAME, MAT_QUESTIONS.ID, MAT_QUESTIONS.QUESTIONTEXT, MAT_FREEANSWERS.ANSWERTEXTFROM MAT_FREEANSWERSINNER JOIN MAT_QUESTIONS ON MAT_QUESTIONS.ID = MAT_FREEANSWERS.QUESTIONIDINNER JOIN MAT_INCIDENTS ON MAT_INCIDENTS.INCIDENTID = MAT_FREEANSWERS.INCIDENTIDINNER JOIN MAT_DELIVERY ON MAT_DELIVERY.INCIDENTID = MAT_INCIDENTS.INCIDENTIDINNER JOIN PASMAIN ON PASMAIN.PAS_NO = MAT_DELIVERY.MOTHER_PAS_NOWHERE MAT_DELIVERY.BIRTH_DATE >= '2007-01-01'AND MAT_DELIVERY.BIRTH_DATE < '2007-02-01'AND MAT_QUESTIONS.QUESTIONNAIREID = 2AND MAT_FREEANSWERS.INCIDENTID = 4501UNION ALLSELECT PASMAIN.SURNAME, PASMAIN.FIRNAME, MAT_QUESTIONS.ID, MAT_QUESTIONS.QUESTIONTEXT, MAT_ANSWERS.ANSWERFROM MAT_INCIDENTSINNER JOIN MAT_DELIVERY ON MAT_DELIVERY.INCIDENTID = MAT_INCIDENTS.INCIDENTIDINNER JOIN PASMAIN ON PASMAIN.PAS_NO = MAT_DELIVERY.MOTHER_PAS_NOINNER JOIN MAT_QUESTIONNAIREINCIDENTS ON MAT_QUESTIONNAIREINCIDENTS.INCIDENTID = MAT_INCIDENTS.INCIDENTIDINNER JOIN MAT_QUESTIONNAIRE ON MAT_QUESTIONNAIRE.ID = MAT_QUESTIONNAIREINCIDENTS.QUESTIONNAIREIDINNER JOIN MAT_QUESTIONS ON MAT_QUESTIONS.QUESTIONNAIREID = MAT_QUESTIONNAIREINCIDENTS.QUESTIONNAIREIDINNER JOIN MAT_ANSWERS ON MAT_ANSWERS.QUESTIONID = MAT_QUESTIONS.IDINNER JOIN MAT_INCIDENTANSWERS ON MAT_INCIDENTANSWERS.INCIDENTID = MAT_DELIVERY.INCIDENTIDWHERE MAT_ANSWERS.ID = MAT_INCIDENTANSWERS.ANSWERIDAND MAT_DELIVERY.BIRTH_DATE >= '2007-01-01'AND MAT_DELIVERY.BIRTH_DATE < '2007-02-01'AND MAT_QUESTIONNAIRE.ID = 2AND MAT_INCIDENTS.INCIDENTID = 4501Does anyone know what this could mean? |
 |
|
|
SwePeso
Patron Saint of Lost Yaks
30421 Posts |
Posted - 2007-12-20 : 10:03:13
|
Which tool are you using? E 12°55'05.25"N 56°04'39.16" |
 |
|
|
fionama
Starting Member
6 Posts |
Posted - 2007-12-20 : 10:05:57
|
| Win SQL Lite version 5.0.53.560 |
 |
|
|
SwePeso
Patron Saint of Lost Yaks
30421 Posts |
Posted - 2007-12-20 : 10:18:31
|
Are you running the query above as is, or is there some mechanism that build the query for you? E 12°55'05.25"N 56°04'39.16" |
 |
|
|
SwePeso
Patron Saint of Lost Yaks
30421 Posts |
Posted - 2007-12-20 : 10:18:50
|
Is your backend database MICROSOFT SQL Server? E 12°55'05.25"N 56°04'39.16" |
 |
|
|
fionama
Starting Member
6 Posts |
Posted - 2007-12-20 : 10:20:28
|
| I'm running the query exactly as is |
 |
|
|
jezemine
Master Smack Fu Yak Hacker
2886 Posts |
Posted - 2007-12-20 : 15:41:50
|
quote: Originally posted by Peso Is your backend database MICROSOFT SQL Server? E 12°55'05.25"N 56°04'39.16"
no, it's Win SQL Lite version 5.0.53.560.fionama: this forum is for SQL Server. elsasoft.org |
 |
|
|
|
|
|
|
|