2017-05-25 101 views
1

我正在跟踪卖家在亚马逊上销售的产品价格是否低于某个特定价格。我在数据库中存储产品,销售商和违规行为。我试图显示在24小时内违规的卖家人数。我没有显示违规卖家的数量,而是收到违规总数。使用SELECT DISTINCT COUNT获取数据库中的错误金额

ViolationsRepository.php

public function countNumberOfSellersInViolationsForVendorInLast24Hours($vendorId) 
{ 
    $select = "SELECT DISTINCT COUNT(
     CASE 
     WHEN v.source = 'amazon' THEN 
      (SELECT DISTINCT s.id 
      FROM seller_info_amazon AS sai 
      LEFT JOIN sellers_amazon AS sa ON sa.amazon_id = sai.id 
      LEFT JOIN sellers AS s ON sa.seller_id = s.id 
      WHERE sai.unique_id = v.seller_id_amazon AND s.id IS NOT NULL 
      LIMIT 1) 
     WHEN v.source = 'ebay' THEN 
      (SELECT s.id 
      FROM sellers AS s 
      WHERE s.id = v.seller_id_ebay 
      LIMIT 1) 
     WHEN v.source = 'google' THEN 
      (SELECT s.id 
      FROM sellers AS s 
      WHERE s.id = v.seller_id_google 
      LIMIT 1) 
     END) 
    FROM 
     violations AS v 

    "; 

    $timeLimit = new \DateTime('24 hours ago'); 

    $where = " WHERE v.vendor_id = :vendorId AND v.last_scout_date >= :timeLimit \n"; 


    $query = $this->getEntityManager()->getConnection()->prepare($select . $where); 
    $query->bindValue(':vendorId', $vendorId); 
    $query->bindValue(':timeLimit', $timeLimit->format("Y-m-d h:i:s")); 

    $query->execute(); 

    return $query->fetchColumn(); 

} 

sellers_amazon TABLE

seller_id amazon_id 

侵犯TABLE

id  vendor_id seller_id_amazon last_scout_date source 

seller_info_amazonŤ ABLE

id unique_id name 

卖家表

id originating_vendor_id name 
+0

显示您的数据库表结构 – CodeGodie

+0

@CodeGodie已更新 – RKlina

回答

0

解决了这个 - 的SELECT COUNT(DISTINCT ...代替SELECT DISTINCT COUNT(...