Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.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_Join_Outer Join - Fatal编程技术网

Mysql 如何在不真正连接该表的情况下,通过连接获取某个字段值?

Mysql 如何在不真正连接该表的情况下,通过连接获取某个字段值?,mysql,join,outer-join,Mysql,Join,Outer Join,嗯,我有一个来自客户机的数据库,其中的表没有良好的关系,是一团乱。获取所需信息的问题是,我需要关联表的字段与我将要使用的表不相关 我要说清楚: 共有3张表格:参观、咖啡和付款 桌上咖啡有付款id。 餐桌上有咖啡。 表付款没有ID 我想知道有多少客人喝了咖啡,每杯咖啡付了多少钱 结果应该是: 访问|咖啡|付款 8234 |摩卡| 829 那么,我怎么知道所有的付款,咖啡是什么,有多少次访问 可能是显而易见的,但我也被同样的事情弄得不知所措 谢谢大家的帮助 要获得每种咖啡的访问: SELECT c.

嗯,我有一个来自客户机的数据库,其中的表没有良好的关系,是一团乱。获取所需信息的问题是,我需要关联表的字段与我将要使用的表不相关

我要说清楚:

共有3张表格:参观、咖啡和付款

桌上咖啡有付款id。 餐桌上有咖啡。 表付款没有ID

我想知道有多少客人喝了咖啡,每杯咖啡付了多少钱

结果应该是:

访问|咖啡|付款
8234 |摩卡| 829

那么,我怎么知道所有的付款,咖啡是什么,有多少次访问

可能是显而易见的,但我也被同样的事情弄得不知所措


谢谢大家的帮助

要获得每种咖啡的访问:

SELECT c.name AS coffee, IFNULL(count(v.coffee_id), 0) AS visits
FROM coffees AS c
LEFT JOIN visits AS v ON c.id = v.coffee_id
GROUP BY c.id
SELECT c.name AS coffee, IFNULL(count(p.id), 0) AS payments
FROM coffees AS c
LEFT JOIN payments AS p ON c.payment_id = p.id
GROUP BY c.id
要获得每种咖啡的付款:

SELECT c.name AS coffee, IFNULL(count(v.coffee_id), 0) AS visits
FROM coffees AS c
LEFT JOIN visits AS v ON c.id = v.coffee_id
GROUP BY c.id
SELECT c.name AS coffee, IFNULL(count(p.id), 0) AS payments
FROM coffees AS c
LEFT JOIN payments AS p ON c.payment_id = p.id
GROUP BY c.id
要在一个查询中同时获取它们,请执行以下操作:

SELECT coffee, MAX(visits) AS visits, MAX(payments) AS payments
FROM (
    SELECT c.name AS coffee, IFNULL(count(v.coffee_id), 0) AS visits, 0 AS payments
    FROM coffees AS c
    LEFT JOIN visits AS v ON c.id = v.coffee_id
    GROUP BY c.id
    UNION
    SELECT c.name AS coffee, 0 as visits, IFNULL(count(p.id), 0) AS payments
    FROM coffees AS c
    LEFT JOIN payments AS p ON c.payment_id = p.id
    GROUP BY c.id) x
GROUP BY coffee

如果payments表没有id,payments\u id用于什么?我的意思是,payments只有id字段,但没有像coffe\u id这样的关系。例如,向我们展示3个表的剪切粘贴错误模式加上示例数据。听起来模式
可能足够了,但如果没有任何与表相关的内容,您就不知道db工作,没有办法计算你想要什么。