Oracle Development
 
Forums: » Register « |  User CP |  Games |  Calendar |  Members |  FAQs |  Sitemap |  Support | 
User Name:
Password:
Remember me
Go Back   Dev Shed ForumsDatabasesOracle Development

Reply
Add This Thread To:
  Del.icio.us   Digg   Google   Spurl   Blink   Furl   Simpy   Y! MyWeb 
Thread Tools Search this Thread Rate Thread Display Modes
 
Unread Dev Shed Forums Sponsor:
Stop making mediocre tutorials.The best tutorials are video! Camtasia Studio makes it easy to create engaging, buzz-building screen videos at any size, in any popular format. Download the free trial!
  #1  
Old September 12th, 2004, 03:33 AM
kworm kworm is offline
Registered User
Dev Shed Newbie (0 - 499 posts)
 
Join Date: Sep 2004
Posts: 3 kworm User rank is Just a Lowly Private (1 - 20 Reputation Level) 
Time spent in forums: < 1 sec
Reputation Power: 0
Help needed migrating query from MySQL

I'm new to Oracle and am migrating an app from MySQL that uses the following query:

select su.*,ih.*,sum(ih.invtotal-ih.amtpaid) as total from
subscriber su, inv_header ih
where su.subid=ih.subid and ih.invtotal > ih.amtpaid
group by su.subid;

This works find in MySQL but gives an ORA-00979: not a GROUP BY expression with 10g.

Any help would be appreciated.

Kevin

Reply With Quote
  #2  
Old September 12th, 2004, 05:16 AM
swampBoogie swampBoogie is offline
Contributing User
Dev Shed Intermediate (1500 - 1999 posts)
 
Join Date: Jan 2003
Location: Paris Uppland
Posts: 1,745 swampBoogie User rank is Sergeant Major (2000 - 5000 Reputation Level)swampBoogie User rank is Sergeant Major (2000 - 5000 Reputation Level)swampBoogie User rank is Sergeant Major (2000 - 5000 Reputation Level)swampBoogie User rank is Sergeant Major (2000 - 5000 Reputation Level)swampBoogie User rank is Sergeant Major (2000 - 5000 Reputation Level)swampBoogie User rank is Sergeant Major (2000 - 5000 Reputation Level) 
Time spent in forums: 2 Weeks 3 Days 20 h 25 m 5 sec
Reputation Power: 31
All columns in the select list must either be included in the group by clause or the argument of an aggregate function.

You says that it works fine in Mysql but actually you will get unpredictable results.

Reply With Quote
  #3  
Old September 12th, 2004, 09:43 AM
kworm kworm is offline
Registered User
Dev Shed Newbie (0 - 499 posts)
 
Join Date: Sep 2004
Posts: 3 kworm User rank is Just a Lowly Private (1 - 20 Reputation Level) 
Time spent in forums: < 1 sec
Reputation Power: 0
Quote:
Originally Posted by swampBoogie
All columns in the select list must either be included in the group by clause or the argument of an aggregate function.

You says that it works fine in Mysql but actually you will get unpredictable results.


What would be the appropriate way to express this in oracle since I can't list all items in the group by? The subscriber table has a one-to-many relationship with inv_header and I'm wanting to select the subscriber info + the value of the sum aggregate from inv_header.

Thanks

Reply With Quote
  #4  
Old September 12th, 2004, 11:05 AM
swampBoogie swampBoogie is offline
Contributing User
Dev Shed Intermediate (1500 - 1999 posts)
 
Join Date: Jan 2003
Location: Paris Uppland
Posts: 1,745 swampBoogie User rank is Sergeant Major (2000 - 5000 Reputation Level)swampBoogie User rank is Sergeant Major (2000 - 5000 Reputation Level)swampBoogie User rank is Sergeant Major (2000 - 5000 Reputation Level)swampBoogie User rank is Sergeant Major (2000 - 5000 Reputation Level)swampBoogie User rank is Sergeant Major (2000 - 5000 Reputation Level)swampBoogie User rank is Sergeant Major (2000 - 5000 Reputation Level) 
Time spent in forums: 2 Weeks 3 Days 20 h 25 m 5 sec
Reputation Power: 31
Well, assume that your data looks like

T:

A B C
-----
1 3 3
1 2 4
1 4 5

When doing the query

Code:
select a,b,sum(c) 
from t
group by a


which value from the column b should be returned? As there is no way of deciding a good DBMS will say that the query is bad.

If you say it does not matter which value you get I don't see why you include the column in the select list at all. You shouldn't use * either (in my opinion), specify the columns you want explicitly.

So you can either omit the column from the select list or apply a aggregate function to it, eg max or min.

Mysql can give any of the values in the B column and the result may differ from time to time which is not desirable.

Reply With Quote
  #5  
Old September 12th, 2004, 12:50 PM
kworm kworm is offline
Registered User
Dev Shed Newbie (0 - 499 posts)
 
Join Date: Sep 2004
Posts: 3 kworm User rank is Just a Lowly Private (1 - 20 Reputation Level) 
Time spent in forums: < 1 sec
Reputation Power: 0
Thanks for the info. I was able to solve my problem by using a sub-select as follows:

select su.subid,su.name,ih.total
from subscriber su,
(select subid,sum(invtotal-amtpaid) total
from inv_header
where invtotal > amtpaid
group by subid) ih
where su.paymethod=2
and su.subid=ih.subid
order by su.subid;

This seems to work perfectly.

Reply With Quote
Reply

Viewing: Dev Shed ForumsDatabasesOracle Development > Help needed migrating query from MySQL


Thread Tools  Search this Thread 
Search this Thread:

Advanced Search
Display Modes  Rate This Thread 
Rate This Thread:


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
View Your Warnings | New Posts | Latest News | Latest Threads | Shoutbox
Forum Jump

 Free IT White Papers!
 
Accelerating Trading Partner Performance
One in five. That's how many partner transactions have at least one error. That is an amazing statistic, particularly given the extraordinary leaps in innovation across the global supply chain during the past two decades. Download this white paper to learn more.

 
Competing on Analytics
This Tech Analysis is designed to help identify characteristics shared by analytics competitors, and includes information about 32 organizations that have made a commitment to quantitative, fact-based analysis.

 
Cost Effective Scaling with Virtualization and Coyote Point Systems
An overview of the industry trend toward virtualization, how server consolidation has increased the importance of application uptime and the steps being taken to integrate load balancing technology with virtualized servers.

 
Five Checkpoints to Implementing IP Telephony
Implementation planning for IP PBX software and IP telephony has become vital as businesses replace discontinued legacy PBX phone systems. This informative whitepaper outlines five "checkpoints" for any implementation plan that will help make IP communications a successful proposition.

 
Hosted Email Security: Staying Ahead of New Threats
In the last two years, email has become a fierce battleground between the nefarious forces of spam and malware, and the heroes of messaging protection. The spam volumes increased alarmingly every month, bringing clever new forms of phishing and virus propagation attacks.

 

Forums: » Register « |  User CP |  Games |  Calendar |  Members |  FAQs |  Sitemap |  Support | 
  
 





© 2003-2008 by Developer Shed. All rights reserved. DS Cluster 3 hosted by Hostway