ColdFusion cfselect отображает два столбца запроса

Я пытаюсь отобразить результаты запроса, но мне трудно объединить два значения, которые выдает запрос... Вот мой запрос

    <cffunction name="getStudentData"  returntype="query">
    <cfargument name="nameVar" type="string" required="yes">
    <cfargument name="timeframe" type="numeric" required="yes">

    <cfquery datasource="#Application.hds#" name="gsd">
    select (s.lastname + ', ' + s.firstname) as StudData,
    ('[' + r.hallname + ' ' + r.roomnumber + ']')  as roomdata,
     s.studentnumber
    from tblstudents s left join 
    (select h.hallname, ra.roomnumber, studentid 
    from tblroomassignments ra, tblhalls h
    where ra.TimeFrame = #Arguments.timeframe# 
    and ra.hallid = h.hallid) r
    on s.studentid = r.studentid
    where s.lastname like '#Arguments.nameVar#%'
    </cfquery>
    <cfreturn #gsd#>
    </cffunction>

Я пытаюсь выяснить, как отобразить StudData+' '+roomdata, ЕСЛИ они оба существуют вместе, поскольку некоторым учащимся не будет назначена комната. (Я просто пытаюсь составить список студентов, которым назначено общежитие/комната. В моем cfselect...

<cfselect name="RecipientName"
          query="studentdata"
          display="StudData+' '+roomdata"???????
          value="studentnumber">
</cfselect>

Я не знаю, как получить StudData и roomdata в атрибуте отображения, чтобы страница не выдавала мне ошибку столбца запроса. Я очень новичок в холодном синтезе, и насколько я понимаю, вы можете отображать только одну переменную? Есть ли способ объединить StudData и roomdata в переменную, а затем отобразить эту переменную?

У кого-нибудь есть идеи? Можно ли это упростить? Надеюсь, все это имеет смысл!


person EllensburgMoose    schedule 27.05.2015    source источник
comment
Разве вы не можете просто объединить значения в запросе, а затем сослаться на новое поле с псевдонимом?   -  person John Whish    schedule 27.05.2015
comment
Я думаю, вот где у меня проблемы. Я не понимаю, как добавить еще одну строку, которая объединяет два значения, не вызывая ошибки. Кроме того, я также пытаюсь выяснить, как получить здесь какое-то выражение IF, которое извлекает имя студента только в том случае, если ему назначена комната.   -  person EllensburgMoose    schedule 27.05.2015
comment
Вы не можете сделать это внутри тега cfselect. Это должно быть сделано в SQL. Точный синтаксис зависит от вашей СУБД (которую вы не упомянули). Пожалуйста, опубликуйте свою СУБД, запрос, который вы пробовали, и сообщение об ошибке.   -  person Leigh    schedule 28.05.2015


Ответы (1)


Я бы вообще не использовал cfselect.

<select name="RecipientName">
  <cfoutput query="studentdata">
    <option value="#studentnumber#">#StudData# #roomdata#</option>
  </cfoutput>
</select>

Если вы действительно хотите использовать cfselect, я бы объединил столбцы в вашем запросе.

StudData + roomdata AS expanded_student_data

...

<cfselect name="RecipientName"
  query="studentdata"
  display="expanded_student_data"
  value="studentnumber"
>
</cfselect>
person Fish Below the Ice    schedule 27.05.2015
comment
Единственная причина, по которой я пытаюсь использовать cfselect, заключается в том, как строится эта форма. Пользователь выберет имя из выпадающего меню, а затем произойдут другие действия на странице. - person EllensburgMoose; 27.05.2015
comment
Это можно сделать и с помощью jQuery. Не требует cfselect. Поищите что-нибудь вроде coldfusion jquery chained select, и вы найдете кучу примеров. - person Leigh; 28.05.2015