MySQL根据条件从2个表中获取数据

时间:2018-05-31 05:40:33

标签: php mysql

我在MySQL数据库中有4个表:

1)供应商(用于保存所有供应商)
2)车辆(用于获取所有车辆)
3)分配(用于预订车辆进行特定预订)
4)预订(用于保存所有新预订)

车辆表结构:

vid     vehicleName    sid
==========================
13      xx             28
14      xx             28
15      xx             28
16      xx             29
17      xx             29
18      xx             30

分配的表格结构:

asgid    bid   sid   vid   did    assigned_start   assigned_end
===============================================================
42       15    28    15    16     1527804060       1527811320
43       15    28    14    15     1527804060       1527811320

预订页面中,我将获得指定车辆的新预订日期,该日期将从 1527804060 开始,并结束 1527811320 < / strong>即可。 (它基本上是06/01/2018 02:01到04:02)

现在在这个预订页面上,我可以显示供应商和车辆表中的所有供应商名称及其车辆名称(请参阅我的下面的查询)。这很好。

但我想展示在assigned_startassinged_end日期之间已经预订的车辆。

例如:您可以看到vid 15和14已经分配相同旧的和新的预订日期。现在,查询应该只显示13,16,17,18没有车辆。 ,15和14,因为它们是在日期之间预订的

显示所有具有相应供应商名称的车辆的当前查询:

foreach ($sid as $key => $value) {
    $vehicle->rowQuery("SELECT s.supplierName, v.vid, vehicleName, v.noOfSeat, v.seatBooked, v.type 
                        FROM vehicle AS v 
                        LEFT JOIN supplier AS s ON v.sid = s.sid 
                        RIGHT JOIN driver AS d ON d.vid = v.vid
                        WHERE v.sid = $value
                        ORDER BY v.vid DESC");
}

1 个答案:

答案 0 :(得分:1)

尝试以下方法:

select * from vehicle where vid not in ( 
    select vid from assigned where assigned_end < now() or assigned_start > now() 
)