我在sql中有三个表,我想加入它们。
其中一个表是餐馆的菜单(tab007-有4列主键,菜单名称,费用和价格),另一个是客户表(bestel),最后一个是订单(本周制作的帖子有四列,主键,第一张表的主键,第二张表的主键和订单数量。
我想显示哪个菜单是最喜欢的菜单,哪个菜单对餐馆老板有最大的好处。
我尝试了几个选择语句但没有成功。我很乐意从这里获得帮助。这是我的选择声明:
(SELECT T.MID, T.NAME
FROM TAB007 AS T
INNER JOIN POST AS T1
ON T.MID=T1.MID)
SELECT SUM(ANZ) FROM T1.POST
GROUP BY MID;
答案 0 :(得分:1)
你可以使用它:
HttpClient
答案 1 :(得分:0)
要查找收藏菜单,您可以使用:
select t.tname,p.tid,sum(p.orders) from post p, tab007 t
where t.tid=p.tid
group by p.tid
order by sum desc;
要查找效益最高的菜单,请注意以下几点:
****由于我不了解您问题的费用和价格领域,我认为费用低于项目的报价,而且收益将是费用和价格之间的差额。因此,特定项目的所有订单的差异越大,收益就越高。 ****
根据我的上述陈述,我有以下代码:
select t.tname, sum((t.tprice-t.texpense)*p.orders) from post p, tab007 t
where p.tid=t.tid
group by p.tid
order by sum desc;
答案 2 :(得分:0)
假设只需要两个表,您可以像这样计算受欢迎程度和利润
SELECT T.mid, T.name, SUM(p.anz) favorites, SUM((T.price - t.expense) * p.anz) benefit
FROM TAB007 T
JOIN post P on p.mid = t.mid
GROUP BY t.mid, t.name
ORDER BY favorites DESC
要在结果中包含完全没有订单的菜单,您可以使用left join
和case ... is null
SELECT T.mid, T.name,
CASE WHEN p.anz IS NULL
THEN 0
ELSE SUM(p.anz) END AS favorites,
CASE WHEN p.anz IS NULL
THEN 0
ELSE SUM((T.price-t.expense)*p.anz) END AS benefit
FROM menu T
LEFT JOIN post P on p.mid = t.mid
GROUP BY t.mid, t.name
ORDER BY favorites DESC
答案 3 :(得分:0)
菜单表(TAB007)列 - (中间,名称,扩展,价格)
客户表(bestel)列 - (cid,name)
订单表(帖子)列 - (pid,mid,cid,number_of_order)
收藏菜单:我猜是总订单数量最高和
最高利益菜单:在 total_number_of_order *(价格 - 费用)之后有更多好处。
使用LEFT JOIN显示所有菜单项,即使它们不是 排序。
收藏菜单
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
ReactDOM.render(<App />, document.getElementById('root'));
最高福利菜单
select t.mid, t.name, sum(number_of_order) as total_order
from TAB007 t LEFT JOIN post p ON p.mid = t.mid
group by t.mid, t.name
order by total_order desc;