php - 带有连接和计数的 mySQL 查询

标签 php mysql

我有一个 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/

相关文章:

php - Drupal - 无法从 db_query 获得结果

mysql - 连接到本地数据库

PHP - 多个部署环境的不同 MySQL 连接

PHP 重写 url 并保留发布的数据

php - 为什么我的 WordPress 网站重定向到错误的 URL?

php - 哪个更好 - Mysql 与 csv -

php - 我想将 `id` 传递到 index.php 而不使用表单,但它不起作用

php - 使用 PHP 将 javascript 数组添加到数据库的想法

javascript - 从城市返回国家名称?

php - 如何向 PHP/HTML 选择/选项添加选项