afan@xxxxxxxx wrote:
hi to all, I have table orders with primary key order_id. I have table uploaded_files with primary key ufid and uploaded files are linked to orders by order_id column. I have to list all orders and uploaded files. this works fine: $query = mysql_query(" select order_id, order_date, order_status from orders order by order_id desc limit 100"); while($result=mysql_fetch_array($query)) { echo "ID: ". $result['order_date']."|"; echo "DATE: ". $result['order_date'] ."|"; echo "STATUS: ". $result['order_status'] ."|"; echo "UPLOADED FILES: "; $query2 = mysql_query(" select uf.file_name from uploaded_files as uf where uf.order_id = $result['order_id'] "); while($result2=mysql_fetch_array($query2)) { echo $result2['file_name']."|"; } echo "<hr>"; } but I know there must be much better solution then this one. thanks for any help. -afan
Perhaps something like this: (not sure how this would play with the limit key word, but you could play around with it...) If you can guarantee that a record (order_id) will appear in both tables, a simple join will work... but if a record in table A exists but not in table B, a join will not return that record, which is why there is a left outer join.
select o.order_id, o.order_date, o.order_status, uf.file_name from orders o left outer join uploaded_files uf on uf.order_id = o.order_id order by o.order_id desc Not sure if mysql supports this..?? select * from (select o.order_id, o.order_date, o.order_status, uf.file_name from orders o left outer join uploaded_files uf on uf.oerder_id = o.order_id order by o.order_id desc ) LIMIT 100 -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php