-1

カウントが必要ですが、すべてのレコードで 1 が繰り返されます。何をすべきか提案してもらえますか?

SELECT Count(*),
       innerTable.*
FROM   (SELECT (SELECT NAME
                FROM   tours
                WHERE  tours.id = tourbooking.tourid)         AS NAME,
               (SELECT url
                FROM   tours
                WHERE  tours.id = tourbooking.tourid)         AS Url,
               (SELECT TOP 1 NAME
                FROM   tourimages
                WHERE  tourimages.tourid = tourbooking.tourid
                ORDER  BY id ASC)                             AS ImageName,
               (SELECT duration + ' ' + CASE WHEN durationtype = 'd' THEN
                       'Day(s)' WHEN
                       durationtype =
                       'h' THEN 'Hour(s)' END
                FROM   tours
                WHERE  tours.id = tourbooking.tourid)         AS Duration,
               (SELECT Replace(Replace('<a> Adult(s) - <c> Children', '<a>', Sum
                               (CASE
                                       WHEN [type] = 1 THEN 1
                                       ELSE 0
                                END)),
                       '<c>',
                       Sum(CASE
                       WHEN [type] = 2 THEN 1
                       ELSE 0
                       END))
                FROM   tourperson
                WHERE  tourperson.bookingid = tourbooking.id) AS TotalPassengers
               ,
               startdate,
               createddate                                    AS BookingDate,
               id                                             AS BookingID,
               [status],
               serviceprice
        FROM   tourbooking
        WHERE  memberid = 6)AS innerTable
GROUP  BY innerTable.NAME,
          innerTable.bookingdate,
          innerTable.bookingid,
          innerTable.duration,
          innerTable.imagename,
          innerTable.serviceprice,
          innerTable.startdate,
          innerTable.status,
          innerTable.totalpassengers,
          innerTable.url 
4

1 に答える 1

0

からレコードを選択しますtourbooking。選択した列の 1 つが ですid。これはおそらくテーブルの主キーであり、したがって一意です。(そうでない場合は、急いでその名前を変更する必要があります。)

この IDBookingIDを呼び出します。これは、グループ化する列の 1 つです。したがって、 のレコードごとに 1 つの結果レコードが得られますtourbooking。そのような「グループ」内のレコードの数はもちろん 1 です。これは、選択して表示する 1 つのレコードです。

1日あたりの結果レコードなど、実際のグループを作成した場合、1 日あたりの予約数など、実際のカウントが得られます。

于 2015-02-10T07:36:04.423 に答える