Check the 'orders_products' in the 'from' statement... it is being called twice.. once as 'opa' and next as 'opb' THEN if you check in 'where' condition... "opa.products_id = '870'" and "opb.products_id != '870'" select p.products_id, p.products_image from orders_products opa, orders_products opb, orders o, products p where opa.products_id = '870' and opa.orders_id = opb.orders_id and opb.products_id != '870' and opb.products_id = p.products_id and opb.orders_id = o.orders_id and p.products_status = '1' group by p.products_id order by o.date_purchased desc limit 6 aren't they both contradicting each other.. this statement runs.. but I isn't this just a overhead..