我尝试对b.bookingID
和ba.bookingID
使用内部连接语句,但是它不起作用,并说别名'b'不存在。
select c.customerid, customerfname,customerlname, count(b.bookingid) as
'No. of Bookings', flightdate, arrivaltime, departtime,
b.price, status, taxespaid, ba.bagpayment, p.PaymentAmount,
pt.paymentcode
from booking b, flight f, baggage ba, payment p, paymenttype pt, customer
c
where b.bookingID=ba.bookingid
and pt.paymentcode=p.paymentcode
and f.flightnum=b.flightnum
and c.customerid=b.customerID
;
预期结果将显示与每个特定预订相关的所有信息。因此,它不会返回显示
count(b.bookingID)
为3,000的第一行,而是显示数据库中的76个预订,以及每个预订的数量。 最佳答案
如果您想知道所有不同的bookingid的数目,则需要计数(不同的bookingid)
select c.customerid, customerfname,customerlname
, count(distinct b.bookingid) as
'No. of Bookings', flightdate, arrivaltime
, departtime,
b.price, status, taxespaid, ba.bagpayment
, p.PaymentAmount,
pt.paymentcode
from booking b, flight f, baggage ba, payment p, paymenttype pt, customer c
where b.bookingID=ba.bookingid
and pt.paymentcode=p.paymentcode
and f.flightnum=b.flightnum
and c.customerid=b.customerID
;
count()根据您的条件返回不为空的行数
因此
count(*)
返回所有不为空的行,count(bookingid)
返回所有非空行,其bookingid列不为空最后一个
count(distinct bookingid)
重新运行您的情况的bookingid的唯一值的数字,那么请确保bookingid是唯一的,即预订号无论如何,对于没有参与聚集功能工作的列(默认情况下),使用聚集函数没有适当的组仅适用于mysql版本
关于mysql - 当我对主键使用count函数时,它仅返回1行,这是什么问题?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55903435/