首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >排除某些唯一ID,然后对其余的ID进行分组

问排除某些唯一ID,然后对其余的ID进行分组
EN

Stack Overflow用户
提问于 2013-03-07 10:28:22
回答 2查看 43关注 0票数 0

所以我要建一个汽车订票网站。还有一个汽车桌是这样的:

汽车

  • CarID
  • CarModel
  • CarMake
  • 注册

还有一张这样的预订桌:

保留:

  • ReservationID
  • CarID
  • StartDate
  • EndDate

因此,当用户输入他们想预订汽车的日期时,我会查询我的预订表:

如果日期已经在预订表中,我想要获得汽车ID,然后将该汽车排除在显示用户的列表中,这样他们就无法预订它。

我的问题是,我有多个汽车在数据库中是相同的模式和制造,但有一个不同的CarID和注册。

我还将汽车按型号分组,这样用户只会看到一辆特定类型的汽车。

代码语言:javascript
复制
$carstring = mysql_query("SELECT * FROM cars {$statement} AND deleted = 'no'" GROUP BY CarModel);

$getcars = $carstring;
while($searchcars = mysql_fetch_array($getcars)) {



   $checkreservations = mysql_query("SELECT * FROM reservations WHERE startDate = '".$sqlcoldate."' and carID = '".$searchcars['carID']."'");
   $thiscar_num_rows = mysql_num_rows($checkreservations);

因此,您可以在一分钟内看到,我可以知道哪些车是在预订表中,我可以回音真假从num_rows

但是,我认为这是错误的,因为我想做的是找出CarID已经占用了哪些汽车,然后将它们排除在向用户显示所有汽车的$getcars查询循环中,然后按模型分组。

有人能告诉我做这件事的方法,或者更好的方法吗?

EN

回答 2

Stack Overflow用户

发布于 2013-03-07 10:56:07

排除保留的汽车的一种简单方法是使用一个子查询,该子查询获取所有保留的汽车,而不是在主查询中声明那些汽车不允许使用CarID not in construction。

代码语言:javascript
复制
<?php 

    // select all cars that are not reserved at sqlcoldate
    $sql = "SELECT * 
    FROM Cars
    WHERE CarID NOT IN (
        SELECT CarID
        FROM Reservations
        WHERE StartDate > '".$sqlcoldate."' and EndDate < '".$sqlcoldate."'
    )
    GROUP BY CarModel";

    // execute that query
    $result = mysql_query($sql);

    // if there are no results print a message
    if (mysql_num_rows($result) == 0) {
        echo "No cars found";
        exit; // Exit the function, because there is nothing to do
    }

    // else print all available cars
    while ($row = mysql_fetch_assoc($result)) {
        echo "Model available car is :" . $row["CarModel"] . " </br>";
    }
?>
票数 0
EN

Stack Overflow用户

发布于 2013-03-07 11:00:08

实际上并没有测试过。但它应该有效

代码语言:javascript
复制
SELECT c.* FROM cars c
LEFT JOIN reservations r
ON c.carID=r.carID AND
selected_date BETWEEN r.startDate AND r.endDate
WHERE r.carID is null
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15268707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档