query_posts
should be avoided at all costs. This is not just my emphasis, but the codex’s as well
Note: This function isn’t meant to be used by plugins or themes. As explained later, there are better, more performant options to alter the main query. query_posts() is overly simplistic and problematic way to modify main query of a page by replacing it with new instance of the query. It is inefficient (re-runs SQL queries) and will outright fail in some circumstances (especially often when dealing with posts pagination).
You should also have a look at this post for further explanation
You should use WP_Query
in this instance.
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
//content goes here
<?php endwhile; endif; ?>
<?php wp_reset_postdata(); ?>
<?php $my_query = new WP_Query( 'post_type=wpsc-product'); ?>
<?php if ( $my_query->have_posts() ) : while ( $my_query->have_posts() ) : $my_query->the_post(); ?>
//content goes here
<?php endwhile; endif; ?>
<?php wp_reset_postdata(); ?>
<nav id="page_nav">
<?php posts_nav_link( ' ', ' ', ' '); ?>
</nav>