寻找有关mysql查询的一些帮助,以便连接表来提取数据。
我有两个主要表格,
session_schedule - >所有时间表都在这里 输入:
40,
41,
42
session_booking。 - >所有注册都在student_id
40 - 我
40 - 我的朋友
41 - 我的朋友
42 - none
当用户从session_schedule注册计划时,会在session_booking表中填充该计划。现在我想获取所有未登记的日程安排。
请参阅以下代码。
这应该解决以下情况:
未被任何人注册的会话。
其他人注册的会议,但不是我。
第二个案件失败了,我和其他人一起参加了会议。
我得到了所有三个条目.. 40,41,42 我不应该得到40
请参阅以下代码。
$session_schedule = ORM::factory('sessionschedule')->select(
'sessionschedule.session_id' ,
'sessions_booking.session_id' ,
'sessions_booking.student_id', )
->join('sessions_booking','LEFT')
// this join is to exclude already paid sessions by the user
->on('sessionschedule.id','=','sessions_booking.session_id')
->where('sessionschedule.session_id', '=', $_POST['id'] )
->where_open()
->where('sessions_booking.session_id','=',NULL) // for sessions nobody booked
->or_where('sessions_booking.student_id','!=',$user->id )// for sessions booked by others
->where_close()
->group_by('sessionschedule.id')->find_all();
答案 0 :(得分:0)
试试这个:
SELECT ses.*
FROM session_schedule ses
LEFT JOIN session_booking sb ON ses.id=sb.session_id AND sb.student_id='me'
WHERE sb.session_id IS NULL;