Thanks for taking the time to reply. I'm using Crystal 10 and have been using the report wizards to query a local MySQL database - I've heard of a left join but wouldn't know what to do with one! Here's my table structure for the report I'm playing with.
# Table structure for table `agents` (these are the clients)
`a_id` int(4) unsigned NOT NULL auto_increment,
`a_name` varchar(60) NOT NULL default 'Un named agent',
`a_status` enum('live','hold','deleted') NOT NULL default 'live',
`a_logo` tinyint(1) NOT NULL default '0',
`a_contact_name` varchar(60) NOT NULL default '0',
`a_tel` varchar(20) NOT NULL default '0',
`a_fax` varchar(20) NOT NULL default '0',
`a_mob` varchar(20) NOT NULL default '0',
`a_email` varchar(60) NOT NULL default '0',
`a_url` varchar(255) NOT NULL default '0',
`a_addr1` varchar(255) NOT NULL default '0',
`a_addr2` varchar(255) NOT NULL default '0',
`a_town` varchar(100) NOT NULL default '0',
`a_region` varchar(100) NOT NULL default '0',
`a_postcode` varchar(20) NOT NULL default '0',
`a_country` varchar(20) NOT NULL default '0',
`a_reg_name` varchar(100) NOT NULL default '0',
`a_reg_nif` varchar(16) NOT NULL default '0',
`a_reg_addr1` varchar(255) NOT NULL default '0',
`a_reg_addr2` varchar(255) NOT NULL default '0',
`a_reg_town` varchar(100) NOT NULL default '0',
`a_reg_region` varchar(100) NOT NULL default '0',
`a_reg_postcode` varchar(20) NOT NULL default '0',
`a_reg_country` varchar(20) NOT NULL default '0',
`a_ext_id` varchar(60) NOT NULL default '0',
PRIMARY KEY (`a_id`),
KEY `a_id` (`a_id`)
TYPE=MyISAM;
# Table structure for table `orders` (an order belongs to an agent and contains items and revenue)
`order_id` int(11) NOT NULL auto_increment,
`a_id` int(11) NOT NULL default '0',
`order_company` enum('kyero','domodo') NOT NULL default 'kyero',
`order_value` float NOT NULL default '0',
`order_payment` enum('outstanding','partial','full','other') NOT NULL default 'outstanding',
`order_payment_type` enum('cash','transfer','cheque','card') default NULL,
`order_created` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`order_id`)
TYPE=MyISAM;
# Table structure for table `revenue` (shows payments made against an order)
revenue_id int(11) NOT NULL auto_increment,
order_id int(11) NOT NULL default '0',
revenue_type enum('bank transfer','cheque','cash') NOT NULL default 'bank transfer',
revenue_date datetime NOT NULL default '0000-00-00 00:00:00',
revenue_amnt float NOT NULL default '0',
PRIMARY KEY (revenue_id),
KEY revenue_id (revenue_id)
TYPE=MyISAM;
# Table structure for table `items` (shows items ordered)
`item_id` int(11) NOT NULL auto_increment,
`order_id` int(11) NOT NULL default '0',
`a_id` int(11) NOT NULL default '0',
`prod_id` int(11) NOT NULL default '0',
`item_value` float NOT NULL default '0',
`item_created` datetime NOT NULL default '0000-00-00 00:00:00',
`item_start_date` datetime NOT NULL default '0000-00-00 00:00:00',
`item_end_date` datetime NOT NULL default '0000-00-00 00:00:00',
`item_status` enum('live','hold','deleted') NOT NULL default 'live',
PRIMARY KEY (`item_id`),
KEY `item_start_date` (`item_start_date`),
KEY `item_end_date` (`item_end_date`),
KEY `item_status` (`item_status`)
TYPE=MyISAM;
# Table structure for table `products` (product definition of an item)
`prod_id` int(11) NOT NULL auto_increment,
`prod_name` varchar(50) NOT NULL default '0',
`prod_desc` text,
`prod_actions` varchar(255) NOT NULL default '0',
`prod_company` enum('kyero','domodo') NOT NULL default 'kyero',
`prod_value` float NOT NULL default '0',
`prod_valid_days` int(3) NOT NULL default '93',
`prod_status` enum('live','hold','deleted') NOT NULL default 'live',
PRIMARY KEY (`prod_id`)
TYPE=MyISAM;
What I'm trying to achieve is something like this:
agent details
order number
list of items/products ordered
subtotal of items and tax calculation
list of payments received
balance outstanding/overpayed
If I have just one item, everything works, if I have just one payment, that works too. The problems start when I have multiple of either. I've tried putting revenue in the details field of the report or items but it always does screwey things and repeat the same items for the number of payments or vice versa. as I said I'm at the wizard stage and have no idea about sql queries. Thanks in advance if you can steer me in the right direction.
Martin