![](/img/trans.png)
[英]How can i get all data in left table and related table data based on condition laravel
[英]How can I get data from 2 table based on specific condition
在 MySQL 數據庫中,我有 3 個表,稱為供應商、車輛和分配表。
車輛表:
vid vehicleName noOfSeat sid
========================================
13 x 10 28
14 x 8 28
15 x 12 28
16 x 14 29
17 x 4 29
18 x 8 30
分配表
asgid bid sid vid did seatBooked assigned_start assigned_end
============================================================================
56 15 28 13 17 3 06/01/2018 02:01 06/01/2018 04:02
57 15 28 14 15 2 06/01/2018 02:01 06/01/2018 04:02
58 15 28 15 16 3 06/01/2018 02:01 06/01/2018 04:02
在預訂頁面中,我需要將車輛分配到選定的日期,即06/01/2018 02:01至06/01/2018 04:02
現在我想顯示選定供應商的所有車輛以及vehicle
表中的座位數
但條件是:
這些車輛將顯示我所選日期的可用座位數: 6/01/2018 02:01至06/01/2018 04:02
例如:
它必須顯示在帶有座位數的以下車輛:
vid Mp pf Seat available
===========================
13 7 ( why 7? because on my selected date 3 seats booked)
14 6 ( why 6? because on my selected date 2 seats booked)
15 9 ( why 9? because on my selected date 3 seats booked)
16 14
17 4
18 8
它類似於公交車票系統。
目前,我正在使用以下查詢,但它只是刪除了我選擇的日期中的那些視頻,但這是不正確的,因為正如您所看到的,在我選擇的日期幾乎沒有可用的座位!!!
// my selected date: From = '$timestart' and To = '$timeend'
foreach ($sid as $key => $value) {
$vehicle->rowQuery("select * from vehicle where vid not in (
select vid from assigned where assigned_start BETWEEN '$timestart' AND '$timeend' AND assigned_end BETWEEN '$timestart' AND '$timeend' ) AND sid = $value ");
}
我無法想象我該如何解決它:=(
非常感謝您的幫助。
你可以這樣做:
select vehicle.*, (noOfSeat -
(select sum(seatBooked)
from assigned
where sid = 28
and (assigned_start between '2018-01-06 02:01' and '2018-01-06 04:02' )
and (assigned_end between '2018-01-06 02:01' and '2018-01-06 04:02')
)) as seatsAvailable
from vehicle
having seatsAvailable > 0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.