我有一个 sql 数据库并使用 php 访问它。
我的表格看起来像:
Flights Table Flight ID, Time, Airport
座位表 航类号、座位号
我有以下查询:
SELECT f.FlightID 'ID', Count(*) 'Seats Booked' FROM flights f, seats s GROUP BY f.FlightID
我希望输出是
Flight ID Seats Booked
ID Num seats book
目前的问题是它显示了这个:
[{"ID":"0","Seats Booked":"37"},{"ID":"1234","Seats Booked":"37"}] (The output is JSON encoded)
如果你跟着我,应该什么时候像 10 和 27?似乎连接不正确。
请解释我做错了什么而不仅仅是一个答案。
谢谢!
最佳答案
LMC,
您没有使用该子句进行连接。这就是为什么你得到每条分组指令的总和。
使用你的语法的正确指令应该是这样的:
SELECT f.FlightID 'ID', Count(*) 'Seats Booked'
FROM flights f, seats s
where s.FlightId = f.FlightId
GROUP BY f.FlightID
使用内部连接语法应该是这样的:
SELECT f.FlightID 'ID', Count(*) 'Seats Booked'
FROM flights f
inner join seats s
on s.FlightId = f.FlightId
GROUP BY f.FlightID
你可以在不使用飞行表的情况下做某事。航类表没有任何区别,因为您要返回一组航类号。 table 座位有飞行器。下面的语句应该足够了。如果您不担心没有预订座位的航类,这是真的
SELECT s.FlightID 'ID', Count(*) 'Seats Booked'
FROM seats s
GROUP BY s.FlightID
如果你想显示没有预订座位的航类,那么你应该使用 left join to flights。下面的语句将解决这个问题。
SELECT f.FlightID 'ID', Count(*) 'Seats Booked'
FROM flights f
left join seats s
on s.FlightId = f.FlightId
GROUP BY f.FlightID
关于php - 带有连接和计数的 mySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16199012/