Note that there are some explanatory texts on larger screens.

plurals
  1. POTrouble using MySQL JOINS
    primarykey
    data
    text
    <p>I'm getting info of sales by date with this code:</p> <pre><code>SELECT product.product_id, product.product_brand_id, product.product_model_id, product.product_subcategory_id, product.product_retail_price, product.product_wholesale_price, SUM(product_sold.product_quantity) AS product_quantity_sold, SUM(product_sold.product_total_price) AS total_price_sold FROM product INNER JOIN product_sold ON product.product_id = product_sold.product_id AND product.product_subcategory_id = '$subcategory_id' INNER JOIN sales ON sales.sales_id = product_sold.product_sales_id WHERE sales.sales_approved = '1' AND sales.sales_approved_time &gt; '$start_timestamp' AND sales.sales_approved_time &lt; '$end_timestamp' GROUP BY product.product_id ORDER BY SUM(product_sold.product_quantity) DESC </code></pre> <p>This above code is pulling the info correctly, but when I tried to get info of product sold and also unsold I run this code:</p> <pre><code>SELECT product.product_id, product.product_brand_id, product.product_model_id, product.product_subcategory_id, product.product_retail_price, product.product_wholesale_price, SUM(product_sold.product_quantity) AS product_quantity_sold, SUM(product_sold.product_total_price) AS total_price_sold, product_brand.brand_name, product_model.model_name, product_subcategory.subcategory_name FROM product LEFT JOIN product_sold ON product.product_id = product_sold.product_id AND product.product_subcategory_id = '$subcategory_id' LEFT JOIN sales ON sales.sales_id = product_sold.product_sales_id AND sales.sales_approved = '1' AND sales.sales_approved_time &gt; '$start_timestamp' AND sales.sales_approved_time &lt; '$end_timestamp' INNER JOIN product_brand ON product_brand.brand_id = product.product_brand_id INNER JOIN product_model ON product_model.model_id = product.product_model_id INNER JOIN product_subcategory ON product_subcategory.subcategory_id = product.product_subcategory_id WHERE product.product_subcategory_id = '$subcategory_id' GROUP BY product.product_id ORDER BY SUM(product_sold.product_quantity) DESC, product_brand.brand_name ASC, product_model.model_name ASC </code></pre> <p>When I run that code works but not by date, it takes all the data from the database and show the info.</p> <p>What I need is show products that have been sold and then add a kind of subquery to also show products that haven't been sold.</p> <hr> <p>THE FINAL SOLUTION I FOUND IS THIS.</p> <pre><code>SELECT p.product_id, p.product_brand_id, p.product_model_id, p.product_subcategory_id, p.product_retail_price, p.product_wholesale_price, SUM(IFNULL(ps.product_quantity,0)) AS product_quantity_sold,SUM(IFNULL(ps.product_total_price,0)) AS total_price_sold, pb.brand_name, pm.model_name, psub.subcategory_name FROM product p LEFT JOIN product_sold ps ON p.product_id = ps.product_id LEFT JOIN sales s ON ps.product_sales_id = s.sales_id JOIN product_brand pb ON pb.brand_id = p.product_brand_id JOIN product_model pm ON pm.model_id = p.product_model_id JOIN product_subcategory psub ON psub.subcategory_id = p.product_subcategory_id WHERE p.product_subcategory_id = $subcategory_id AND ( s.sales_id IS NULL OR ( s.sales_approved = '1' AND s.sales_approved_time &gt; '$start_timestamp' AND s.sales_approved_time &lt; '$end_timestamp' ) ) GROUP BY p.product_id ORDER BY product_quantity_sold DESC, pb.brand_name ASC, pm.model_name ASC </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload