mardi 7 janvier 2020

MySQL SELECT COUNT with multiple conditions

I have an issue when running this query :

SELECT COUNT(Log_ns.n_s) 
FROM Log_ns 
WHERE Log_ns.id_produit = Magasins.produit_id 
AND DATE(Log_ns.created_at) = DATE(Magasins.created_at)) as qte_ins

The problem is that when I remove one of the conditions the query works fine but when combining both it gives me 0 results.

This is my full code :

$pro = Log_ns::join('Magasins',  function($join)
        {
          $join->on('Log_ns.id_produit', '=', 'Magasins.produit_id');
          //->where(DB::raw('DATE(Log_ns.created_at)'),'=', DB::raw('DATE(Magasins.created_at)'));

        })
        ->join('Produits', 'Produits.id', '=', 'Magasins.produit_id')
        ->select([
            'Magasins.id', 'Log_ns.created_at',  'Produits.kit', 'Produits.produit', 'Produits.modele', 
            DB::raw('(SELECT Magasins.qte_ret FROM Magasins WHERE Log_ns.id_produit = Magasins.produit_id AND DATE(Log_ns.created_at) = DATE(Magasins.created_at)) as qte_ret,
                     (SELECT Magasins.qte FROM Magasins WHERE Log_ns.id_produit = Magasins.produit_id AND DATE(Log_ns.created_at) = DATE(Magasins.created_at)) as qte,         
                     (SELECT COUNT(Log_ns.n_s) FROM Log_ns WHERE Log_ns.id_produit = Magasins.produit_id AND DATE(Log_ns.created_at) = DATE(Magasins.created_at)) as qte_ins,
                     (SELECT COUNT(Reparations.n_s) FROM Reparations WHERE Reparations.n_s = Log_ns.n_s AND DATE(Log_ns.created_at) = DATE(Reparations.created_at)) as qte_rep,
                     (SELECT SUM(qte) FROM Magasins WHERE Magasins.produit_id = Log_ns.id_produit) AS qte_glob_mp,
                     (SELECT COUNT(Log_ns.n_s) FROM Log_ns WHERE Log_ns.id_produit = Magasins.produit_id) as qte_glob_pro'),
        ])
        ->groupBy(DB::raw('DATE(Log_ns.created_at)'))->distinct();


via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire