Хотите счет, но он повторяется 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 

1 ответ

Решение

Вы выбираете записи из tourbooking, Один из выбранных вами столбцов id, Это, вероятно, первичный ключ таблицы и, следовательно, уникальный. (Если нет, вам следует поторопиться изменить это имя.)

Вы называете это удостоверение личности BookingIDи это один из столбцов, по которым вы группируете. Таким образом, вы получаете одну запись результата на запись в tourbooking, Количество записей в такой "группе", конечно же, равно 1; это та запись, которую вы выбираете и показываете.

Если вы построите реальные группы, скажем, запись результатов в день, то вы получите реальный счет, например, количество заказов в день.

Другие вопросы по тегам