私は SQL の専門家ではなく、私の既存の古典的な ASP コードのバグを特定したため、すべての状況で機能するとは限りません。優れたSQL経験を持つ誰かが、両方の状況が発生したときのより複雑な状況を書くのを手伝ってくれることを願っています
If intItemType = SV_ITEM_TYPE_MATRIX
次に、SQLのこの部分が使用されます
LEFT OUTER JOIN usd_matrixSets MS " &_
"ON MS.itemID = SI.itemID " &_
しかし、intItemType <> SV_ITEM_TYPE_MATRIX
その後は無視されます。
ご覧のとおり、どちらかまたは両方の状況のコードを書いていますが、これは実際には両方が発生する状況についてはカバーしていません。
コードは次のとおりです。
If intItemType = SV_ITEM_TYPE_MATRIX Then
strSQL = "SELECT SI.itemID, itemType, itemText, minimumValue, maximumValue, dataType, MS.matrixSetType, MS.matrixSetID " &_
"FROM usd_SurveyItem SI " &_
"LEFT OUTER JOIN usd_matrixSets MS " &_
"ON MS.itemID = SI.itemID " &_
"WHERE surveyID = " & intSurveyID &_
" AND itemType " &_
"In(" & SV_ITEM_TYPE_TEXTAREA & "," &_
SV_ITEM_TYPE_SINGLE_LINE & "," &_
SV_ITEM_TYPE_DATE & "," &_
SV_ITEM_TYPE_CHECKBOXES & "," &_
SV_ITEM_TYPE_RADIO & "," &_
SV_ITEM_TYPE_DROPDOWN & "," &_
SV_ITEM_TYPE_MATRIX & "," &_
SV_ITEM_TYPE_UPLOAD_FILE & ")" &_
" AND pageID = " & intPageNumber &_
" ORDER BY pageID, SI.orderByID "
else
strSQL = "SELECT SI.itemID, itemType, itemText, minimumValue, maximumValue, dataType" &_
" FROM usd_SurveyItem SI " &_
"WHERE surveyID = " & intSurveyID &_
" AND itemType " &_
"In(" & SV_ITEM_TYPE_TEXTAREA & "," &_
SV_ITEM_TYPE_SINGLE_LINE & "," &_
SV_ITEM_TYPE_DATE & "," &_
SV_ITEM_TYPE_CHECKBOXES & "," &_
SV_ITEM_TYPE_RADIO & "," &_
SV_ITEM_TYPE_DROPDOWN & "," &_
SV_ITEM_TYPE_MATRIX & "," &_
SV_ITEM_TYPE_UPLOAD_FILE & ")" &_
" AND pageID = " & intPageNumber &_
" ORDER BY pageID, SI.orderByID "
end if
私の問題は、データベース内に SV_ITEM_TYPE_MATRIX とその他の両方が同時に存在する場合があることです。このコードを書き直すにはどうすればよいですか?