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