这里我有两个表名称房间和student_hostel,如下所示。 房间看起来像这样
id rm_number capacity bed_no class hostel is_vaccant
40 1 5 1A,1B,1C,1D,1E 27 7 1
41 2 4 2A,2B,2C,2D 28 7 0
42 3 3 3A,3B,3C 29 10 1
43 4 4 4A,4B,4C,4D 30 10 1
44 5 6 5A,5B,5C,5D,5E,5F 27 7 1
45 6 7 6A,6B,6C,6D,6E,6F,6G 29 10 1
我的student_hostel表看起来像这样
id first_name stud_id hostel class room bed status
175 siraj WPGH00175 7 28 41 2A P
176 nesru WPGH00176 7 28 41 2B P
177 faizal WPGH00177 7 28 41 2C P
179 mashoor WPGH00179 7 28 41 2D G
当我使用我的代码时
public function view_room_status($num,$offset)
{
$this->db->select('rooms.*,class.name as class_name,hostel.name as hostel_name,student_hostel.status');
$this->db->join('class','class.id=rooms.class');
$this->db->join('hostel','hostel.id=rooms.hostel');
$this->db->join('student_hostel','rooms.id=student_hostel.room');
$query=$this->db->get('rooms',$num,$offset)->result();
return $query;
}
我是这样的
sl no room class hostel Bed
1 2 Periyar2 Periyar 2A 2B 2C 2D
2 2 Periyar2 Periyar 2A 2B 2C 2D
3 2 Periyar2 Periyar 2A 2B 2C 2D
4 2 Periyar2 Periyar
但我希望得到这样的
sl no room class hostel Bed
1 1 Periyar1 Periyar 1A,1B,1C,1D,1E
2 2 Periyar2 Periyar 2A,2B,2C,2D
3 3 Pamba1 Pamba 3A,3B,3C
4 4 Pamba2 Pamba 4A,4B,4C,4D
5 5 Periyar1 Periyar 5A,5B,5C,5D,5E,5F
6 6 Pamba1 Pamba 6A,6B,6C,6D,6E,6F,6G
这是我的班级表
id name daily_rent mon_rent
11 reservation 200 3000
27 periyar1 100 3000
28 periyar2 100 3000
29 pamba1 100 3000
30 pamba2 100 3000
这是我的宿舍表
id user_id name type place address username password
7 78 periyar Girls tirur malappuram periyar periyarhostel
10 81 pamba Boys tirur malappuram pamba pambahostel
在得到这样的东西后,我想要显示所有床位所占据的状态' P'如同一种颜色和所有床位所占据的状态' G'用一种颜色
答案 0 :(得分:0)
在您的情况下,问题似乎与您的数据有关。查看您的student_hostel.room
列:它只保留值41,因此该表中的每一行都将与房间ID 41匹配。作为证据,请注意查询的输出具有空间#2(即ID) 41)在每一个结果中。
现在我无权访问您的所有数据(似乎有class
列我无法在任何地方看到,而hostel
列有字符串而不是数字)所以我需要更多信息,以确定如何正确地进行连接。
答案 1 :(得分:0)
尝试使用左连接,它将从左表中获取所有列并从右侧
进行匹配答案 2 :(得分:0)
你有太多的联接来获得你需要的结果"使用您正在使用的数据!
根据您提供的数据,您的表格肯定会加入并完全按照您所说的那样...
所以要获得"你想要的输出"根据您提供的内容,您的SQL需要
SELECT rooms.rm_number,class.name,hostel.username,rooms.bed_no
FROM rooms
JOIN class ON class.id=rooms.class
JOIN hostel ON hostel.id=rooms.hostel
我猜你的SL不是你在桌面视图中产生的东西。
我意识到你正在做一个关于查询的所有查询并在表格视图中对其进行过滤,但在这种情况下,这并不适合你。
当然,这不会让你想要用来为表格中的行着色的房间状态,所以看看SolarBear在上面回答了什么。