一个极其复杂的sql语句

来源:百度知道 编辑:UC知道 时间:2024/05/29 00:28:48
具体是这样的:
查询收款前后有差异的,
get表的order_id和id是一对多的关系,get表的id关联account表的type_id,order_id关联travel表和finance中的order_id以及tourist表中的id,通过order_id获得account表的money以及travel的money的和(这两个表的money可能有多个),再和finance中的money的和比较,限制条件很多就不说了。有哪位强人能搞定,我还有一道难的题。-----一定要注意其中的关系,非常容易导致数据不准确!!!!!!!!!!!!
忘记说了,需要获得是所有的关于order_id的信息,每个order_id只有一条信息,比如account表的money以及travel的money的和(是两者的和),finance中的money的和,不要显示多行order_id
@3楼,是两者不等的记录,你的答案不正确,因为这样查询的数据有的就被+了多次,重复了 。
@4楼,我要是知道order_id的值也不用这么麻烦了,现在是要找出所有的order_id的信息。
可能我说的不太清楚。但并没有那么简单,要是简单的话我也不会提问了。
是account.money+travel.money不等于finance.money

我没有你的表结构,我只给你说一下思想.首先你有五个表,get(order_id,id),account(type_id,money),travel(order_id,money),finance(ord_id,money),tourise(id)
有一个问题你没有说清楚,你要的是两者比较大于的记录还是小于的记录.
下面是你要的SQL语句,你写的和什么以及什么都搞乱了!一定要把你的话写清楚我才能帮你解决:
select get.order_id,sum(account.money),sum(travel.money)
from get inner join account on get.id=account.type_id
inner join travel on get.order_id=travel.order_id
inner join finance on get.order_id=finance.order_id
inner join tourist on get.order_id=tourist.id
where sum(account.money)>sum(travel.money)
group by get.order_id
因为我没有你的表结构,你只要看着我的捎改一下就行了!其实并不难,并且你叙述的内容也不是很清楚.

靠 那么高级不懂 我现在也在学SQL2000 。

不难就是太麻烦 懒得写了

如果是PL/SQL的话:
SELECT A.MONEY+B.MONEY,C.MONEY FROM
(SELECT SUM(ACCOUNT.MONEY) MONEY FROM ACCOUNT,GET
WHERE GET.ID=ACCOUNT.TYPE_ID AND GET.ORDER_ID='id名字') A,(SELECT SUM(TRACEL.MONEY) MONEY FROM TRACEL,GET
WHERE GET.ORDER_ID=TRACEL.ORDER_ID AND GET.ORDER_ID='id名字') B,,(SE