gpt4 book ai didi

php - mysql查询多表连接以从一张表中获取排除匹配条件的数据

转载 作者:行者123 更新时间:2023-11-29 22:16:21 24 4
gpt4 key购买 nike

正在寻找有关 mysql 查询的一些帮助,用于连接表以提取数据。

我有两个主表,

  1. session_schedule -> 所有时间表都在这里条目:

    40,

    41,

    42

  2. session 预订。 -> 此处所有带有 Student_id 的注册

    40 - 我

    40 - 我的 friend

    41 - 我的 friend

    42 - 无

当用户从 session_schedule 注册日程时,该信息将填充到 session_booking 表中。现在我想获取所有没有被我注册的时间表。

请看下面的代码。

这应该解决以下情况:

  1. 没有任何人注册的 session 。

  2. 其他人注册的 session ,但我没有注册。

第二种情况失败了,我和其他人注册了拾取 session 。

我得到了所有三个条目..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();

最佳答案

试试这个:

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;

关于php - mysql查询多表连接以从一张表中获取排除匹配条件的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31182404/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com