Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何从数据库中获取组合数?_Mysql_Sql - Fatal编程技术网

Mysql 如何从数据库中获取组合数?

Mysql 如何从数据库中获取组合数?,mysql,sql,Mysql,Sql,如何从数据库中获取组合数 我必须创建数据库表,并希望获得组合的计数。是否有人知道如何将其放入数据库查询中,因此我没有每次访问的db请求 旅行 乘客 预期结果 可供替代的 有人有主意吗 非常感谢 试试这个: SELECT Driver, Passengers, COUNT(*) AS `Count` FROM ( SELECT t.ID, t.Driver, GROUP_CONCAT(p.PassengerID ORDER BY

如何从数据库中获取组合数

我必须创建数据库表,并希望获得组合的计数。是否有人知道如何将其放入数据库查询中,因此我没有每次访问的db请求

旅行 乘客 预期结果 可供替代的 有人有主意吗

非常感谢

试试这个:

SELECT Driver, Passengers, COUNT(*) AS `Count`
FROM (
  SELECT t.ID, t.Driver, 
         GROUP_CONCAT(p.PassengerID 
                      ORDER BY p.PassengerID 
                      SEPARATOR '-') AS Passengers
  FROM Trips AS t
  INNER JOIN Passengers AS p ON t.ID = p.TripID
  GROUP BY t.ID, t.Driver) AS t
GROUP BY Driver, Passengers
上述查询将生成替代结果集。另一个结果集只能使用动态sql实现


如果还有另一次旅行,只有B和C作为乘客,A作为司机,那么预期的结果是什么?示例添加到POST中,因此您要求查询返回动态列数,具体取决于当前表数据?也可能是一种结构,其中列位于行的secons列中。
| ID | PassengerID | TripID |
|----|-------------|--------|
| 1  | B           | 1      |
| 2  | C           | 1      |
| 3  | D           | 1      |
| 4  | B           | 2      |
| 5  | D           | 2      |
| 6  | A           | 3      |
| 7  | B           | 4      |
| 8  | D           | 4      |
| 9  | B           | 5      |
| 10 | C           | 5      |
| Driver | B-C-D | B-D | A | B-C |
|--------|-------|-----|---|-----|
| A      | 1     | 2   | - | 1   |
| B      | -     | -   | 1 | -   |
| Driver | Passengers | Count |
|--------|------------|-------|
| A      | B-C-D      | 1     |
| A      | B-D        | 2     |
| A      | B-C        | 1     |
| B      | A          | 1     |
SELECT Driver, Passengers, COUNT(*) AS `Count`
FROM (
  SELECT t.ID, t.Driver, 
         GROUP_CONCAT(p.PassengerID 
                      ORDER BY p.PassengerID 
                      SEPARATOR '-') AS Passengers
  FROM Trips AS t
  INNER JOIN Passengers AS p ON t.ID = p.TripID
  GROUP BY t.ID, t.Driver) AS t
GROUP BY Driver, Passengers