Either do two queries or suppress the display of customer information within
your application code.  I'd probably do two queries, especially if asking for a
lot of customer info or there were potentially a large number of orders for a
given customer.  Doing a join in either case gives you a lot of extra data that
you don't need.


----- Original Message ----- 
From: "Trevor Morrison" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Sunday, July 27, 2003 8:42 PM
Subject: SQL statement


> HI,
>
> I am using the latest MySql on a Windows 2000 platform and connecting to the
> database using Perl's DBI.  All works fine.  My question is how best to
> write a SQL SELECT statement that will extract the data in the format that I
> want.
>
> I have two tables one that contains all the customers information and the
> second table contains the items that are ordered by the customer ( they both
> have the order_numbre is each table).  My select statement--shown
> below--works fine for a customer that orders a single item, but fails when
> more then one item is ordered.  It will print the customer information
> before each item ordered.  What I want is to print just the customer
> information once, and then print each item ordered by the customer after
> that.  Any help is appreciated.
>
> TIA
>
> Trevor
>
>
> my $sth =$dbh->prepare("SELECT
> miva_orders.order_number,DATE_FORMAT(miva_orders.date,'%c/%e/%Y'),miva_order
> s.credit_card_type,miva_orders.shiptype,miva_orders.bill_name,miva_orders.bi
> ll_company,miva_orders.bill_addr1,miva_orders.bill_addr2,miva_orders.bill_ci
> ty,miva_orders.bill_state,miva_orders.bill_zip,miva_orders.ship_name,miva_or
> ders.ship_addr1,miva_orders.ship_addr2,miva_orders.ship_city,miva_orders.shi
> p_state,miva_orders.ship_zip,miva_orders.email,miva_orders.phone,miva_orders
> .sales_tax,miva_orders.shipping_amount,miva_items_ordered.part_number,miva_i
> tems_ordered.quantity FROM (miva_orders,miva_items_ordered) WHERE
> miva_orders.order_number=miva_items_ordered.order_number");
> $sth->execute();
>  my $i=0;
> while (my @array  = $sth->fetchrow_array()) {
> for ( $i = 0; $i <= $#array;  $i++) {
> print PARSED $array[$i] . ( ($i >=$#array) ?  "\015" : "\t");
> }
> }


-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to