my $dbh = DBI->connect($DNS, {RaiseError=>1});
my $sth = $dbh->prepare(qq{SELECT product, price, quantity
FROM products
WHERE quantity < ? });
$sth->execute(100);
sub ask_customer {
# display product details
# ask customer input
# do something smart with customer answer
}
while (my ($product, $price, $quantity) = $sth->fetchrow_array()) {
ask_customer ($product, $price, $quantity);
}
$dbh->disconnect();
####
+----------------------+ +-----------------------+
| customer | | order |
+-----+--------+-------+ +--------+--------+-----+
| ID | name | state | | custID | prodID | qty |
+-----+--------+-------+ +--------+--------+-----+
| C01 | Joe | NY | | C02 | P03 | 9 |
| C02 | Frank | NY | | C02 | P01 | 2 |
| C03 | Bill | TX | | C02 | P02 | 200 |
| C04 | Moe | MA | | C05 | P01 | 3 |
| C05 | Sue | CA | | C05 | P02 | 450 |
+-----+--------+-------+ | C01 | P04 | 5 |
| C01 | P03 | 1 |
+----------------------+ +--------+--------+-----+
| product |
+-----+-------+--------+
| ID | price | name |
+-----+-------+--------+
| P01 | 1.90 | hammer |
| P02 | 0.05 | nail |
| P03 | 5.50 | pliers |
| P04 | 4.00 | cutter |
+-----+-------+--------+
##
##
my @customers = (
[ 'C01', 'Joe', 'NY' ],
[ 'C02', 'Frank', 'NY' ],
[ 'C03', 'Bill', 'TX' ],
[ 'C04', 'Moe', 'MA' ],
[ 'C05', 'Sue', 'CA' ]
);
my @products = (
[ 'P01', 'hammer', 1.90 ],
[ 'P02', 'nail', 0.05 ],
[ 'P03', 'pliers', 5.50 ],
[ 'P04', 'cutter', 4.00 ]
);
my @orders = (
[ 'C02', 'P03', 9 ],
[ 'C02', 'P01', 2 ],
[ 'C02', 'P02', 200 ],
[ 'C05', 'P01', 3 ],
[ 'C05', 'P02', 450 ],
[ 'C01', 'P04', 4 ],
[ 'C01', 'P03', 1 ]
);
##
##
SELECT cust.name AS customer, prod.name AS product,
price, qty, qty*price AS total
FROM order
INNER JOIN customer cust ON (cust.ID = custID)
INNER JOIN product prod ON (prod.ID = prodID)
+------------------------------------------+
| query results |
+----------+---------+-------+-----+-------+
| customer | product | price | qty | total |
+----------+---------+-------+-----+-------+
| Frank | pliers | 5.50 | 9 | 49.50 |
| Frank | hammer | 1.90 | 2 | 3.80 |
| Frank | nail | 0.05 | 200 | 10.00 |
| Sue | hammer | 1.90 | 3 | 5.70 |
| Sue | nail | 0.05 | 450 | 22.50 |
| Joe | cutter | 4.00 | 5 | 20.00 |
| Joe | pliers | 5.50 | 1 | 5.50 |
+----------+---------+-------+-----+-------+
SELECT cust.name AS customer, SUM(qty*price) AS total
FROM order
INNER JOIN customer cust ON (cust.ID = custID)
INNER JOIN product prod ON (prod.ID = prodID)
GROUP BY customer
+------------------+
| query results |
+----------+-------+
| customer | total |
+----------+-------+
| Frank | 63.30 |
| Sue | 28.20 |
| Joe | 25.50 |
+----------+-------+
##
##
my %orders_by_customer = (
'Frank' => [ { product => 'pliers', qty => 9 },
{ product => 'hammer', qty => 2 },
{ product => 'nail', qty => 200 }
] ,
'Sue' => [ { product => 'hammer', qty => 3 },
{ product => 'nail', qty => 450 }
] ,
'Joe' => [ { product => 'cutter', qty => 5 },
{ product => 'pliers', qty => 1 }
]
);
##
##
my %orders_by_customer = ();
while (my $href = $sth->fetchrow_hashref()) {
my %order = (
'product' => $href->{'product'},
'qty' => $href->{qty}
);
push @{$orders_by_customer{$href->{'customer'}}}, \%order;
}
##
##
my $surname = 'Jones';
my $query=
qq{SELECT name, surname FROM employees WHERE surname = $surname };
my $sth = $dbh->prepare($query);
$sth->execute();
##
##
my $query= qq{SELECT name, surname FROM employees WHERE surname = ? };
my $sth = $dbh->prepare($query);
$sth->execute('Jones');