Как получить данные из 2 таблиц, объединив их
У меня есть 2 стола
Таблица 1-это главная таблица, где я храню статус комнаты, номер комнаты и статус уборки.
select room_no,room_status,housekeeping_status from room_master
Выполнив вышеприведенный запрос, я получу следующий результат.
room_no room_status housekeeping_status 801 vacant Ready 802 Vacant Dirty 803 Occupied Dirty 804 vacant Ready 805 Occupied Clean
Используя приведенные выше результаты я пишу приведенный ниже код для назначения комнат в список
добавление изображения,текста и номера номера в зависимости от статуса
strsql = "select room_no,room_status,housekeeping_status from room_master" dt1 = ConnectionModule.HMSgetdataset(strsql) Dim lst1() As ListViewItem ReDim Preserve lst1(dt1.Rows.Count - 1) For i = 0 To dt1.Rows.Count - 1 If dt1.Rows(i)(1) = "Vacant" And dt1.Rows(i)(2) = "Ready" Then lst1(i) = New ListViewItem lst1(i).Text = dt1.Rows(i)(0) lst1(i).ImageIndex = 2 lst1(i).BackColor = Color.SpringGreen lbl_vacantready.Text = CDbl(lbl_vacantready.Text) + 1 ElseIf dt1.Rows(i)(1) = "Vacant" And dt1.Rows(i)(2) <> "Ready" And dt1.Rows(i)(2) <> "OutInv" And dt1.Rows(i)(2) <> "OutOdr" Then lst1(i) = New ListViewItem lst1(i).Text = dt1.Rows(i)(0) lst1(i).ImageIndex = 0 lst1(i).BackColor = Color.CadetBlue lbl_vacantnotready.Text = CDbl(lbl_vacantnotready.Text) + 1 ElseIf dt1.Rows(i)(1) = "Occupied" Then lst1(i) = New ListViewItem lst1(i).Text = dt1.Rows(i)(0) lst1(i).ImageIndex = 1 lst1(i).BackColor = Color.Aqua lbl_occupied.Text = CDbl(lbl_occupied.Text) + 1 ElseIf dt1.Rows(i)(2) = "OutInv" Then lst1(i) = New ListViewItem lst1(i).Text = dt1.Rows(i)(0) lst1(i).ImageIndex = 4 lst1(i).BackColor = Color.OrangeRed lbl_OOI.Text = CDbl(lbl_OOI.Text) + 1 ElseIf dt1.Rows(i)(2) = "OutOdr" Then lst1(i) = New ListViewItem lst1(i).Text = dt1.Rows(i)(0) lst1(i).ImageIndex = 5 lst1(i).BackColor = Color.Orange lbl_OOR.Text = CDbl(lbl_OOR.Text) + 1 End If Next
Что я уже пробовал:
Теперь требование заключается в том, что когда есть бронирование с любым номером, то мне нужно добавить
"(R)" рядом с комнатой нет.
Для проверки бронирования я использую следующий запрос.
strsql="select roomno from guestreservation where arrivaldate=cast('" & Format(currdate(), "dd-MMM-yyyy") & "' as smalldatetime)"
он даст номера номеров, которые были забронированы на сегодняшний день.
room_no 801 802
поэтому для номеров комнат 801 и 802 нужно добавить "(R)" рядом с номером комнаты.
я написал нижеприведенную строку, чтобы добавить "(R)". Но он должен быть отключен только тогда, когда есть бронирование с этим номером, для остальных номеров номер номера будет отображаться как тот же самый.
lst1(i).Text = dt1.Rows(i)(0).Tostring() + "R"
поэтому я предполагаю добавить "(R)" только в цикле.
"how can i join the 2 queries to get the room number as reserved"
jaket-cp
Вы должны быть в состоянии сделать это в SQL - что-то вроде этого (непроверенное):
выбирать
гр.room_no,
гр.room_status,
гр.housekeeping_status,
дело
когда gr.roomno равен нулю, то "
еще одна буква "Р"
конец AmIReserved
от room_master rm
слева присоединяйтесь к guestreservation gr
на rm.roomno = gr.roomno
и Cast(getdate() выполняет как дата) = приведение(arrivaldate как дата)
;
Member 13142345
Спасибо. Он работал с модификациями.
jaket-cp
рад помочь - но я вижу, что решение 1 хорошо, он получает мои 5+