2

2つのテーブルがあります。1つはTourで、もう1つはReservedTourです。表の列は次のとおりです。

Tour       | ReservedTour
===========|=============
id         | id
city       | Tid
capacity   | number
timeout    | .
.          | .
.          | .
.          |
========== |======

次のようなSQLステートメントを記述します

select *, (select sum(rt.`number`) from ReservedTour as rt where rt.`Tid`=t.id GROUP BY rt.`Tid`) as total
  from Tour as t 
 where City = 'alahom' and '1400-12-13' <= t.`timeout` and 4 < t.`Capacity`- total;

しかし、これにはエラーがあります—合計は正しくありません。

どうすればこれを修正できますか?

4

2 に答える 2

1

これを試して:

select t.*, sum(rt.`number`) as total 
from Tour as t
join  ReservedTour as rt on rt.`Tid`=t.id
where City = 'alahom' and  t.`timeout`=> '1400-12-13' and t.`Capacity`-total > 4
GROUP BY t.id
于 2013-03-09T18:22:25.920 に答える
1

私はあなたがこのようなものを探しているかもしれないと思います:

SELECT T.*, RT.total
FROM Tour T
  JOIN (select Tid, sum(number) total
          from ReservedTour 
          GROUP BY TId ) RT ON T.Id = RT.TiD
WHERE City = 'alahom' 
   AND '1400-12-13' <= t.`timeout` 
   AND 4 < t.Capacity-RT.total;

凝縮された SQL Fiddle デモ

于 2013-03-09T18:27:26.340 に答える