Хотите счет, но он повторяется 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; это та запись, которую вы выбираете и показываете.
Если вы построите реальные группы, скажем, запись результатов в день, то вы получите реальный счет, например, количество заказов в день.