簡體   English   中英

如何根據特定條件從 2 個表中獲取數據

[英]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:0106/01/2018 04:02

現在我想顯示選定供應商的所有車輛以及vehicle表中的座位數

但條件是:

這些車輛將顯示我所選日期的可用座位數: 6/01/2018 02:0106/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

http://sqlfiddle.com/#!9/c6bcb6/15

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM