简体   繁体   中英

Select INNER JOIN mysql DataBase

I want to select database with condition but not working.

I have this query :

 SELECT c.*
      ,s.*
      ,f.*
      ,count(c.id) as instock_count
      ,totals.orders_total
      ,GROUP_CONCAT(c.sku SEPARATOR '<br/>') AS sku
  FROM produse_com c
    INNER JOIN (SELECT * , SUM(stoc) as stoc_sum
                FROM stocuri_mentor 
                GROUP BY sku ) s 
      ON c.sku = s.sku
  INNER JOIN (SELECT count(id) as orders_total, id_comanda 
               FROM produse_com 
               WHERE NOT ridicat = 'Da'
                GROUP BY id_comanda ) totals
     ON totals.id_comanda = c.id_comanda 
  INNER JOIN (SELECT data_add, status, id_comanda
                FROM comenzi 
                  WHERE NOT (status = 'Impachetat' OR status = 'Stornat' OR status = 'Anulat')
                  ) f
     ON f.id_comanda = c.id_comanda
  WHERE stoc_sum >= c.qty
  GROUP BY c.id_comanda
  HAVING instock_count = orders_total

The issue is I have a condition WHERE NOT ridicat = 'Da'
But the result contain all result with ridicat = 'Da'

EDIT : If I remove this query INNER JOIN (SELECT * ,SUM(stoc) as stoc_sum FROM stocuri_mentor GROUP BY sku ) s ON c.nume_produs = s.sku AND WHERE stoc_sum >= c.qty the result is OK

EDIT 2 : SOLUTION = add 1 more condition WHERE stoc_sum >= c.qty AND ridicat <> 'Da'

You can try this query.

 SELECT count(id) as orders_total, id_comanda,  ridicat
                   FROM produse_com 
                   WHERE ridicat != 'Da'
                    GROUP BY id_comanda;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM