mysql - 使用php查询计算字段总计

标签 mysql sql database

我正在使用 PHP。我想编写一个满足某些条件的查询。

Add totals from field_id=198 for logged-in [userid] if
wp_frm_item_metas field_id=253 where meta_value=Complete
and
wp_frm_item_metas field_id=278 wheremeta_value=Yes
and
wp_frm_item_metas field_id=212 is between Begin and End date
wp_frm_item_metas field_id=270wheremeta_value=[userid of logged in user]

表结构:

CREATE TABLE IF NOT EXISTS `wp_frm_item_metas` (
  `id` int(11) NOT NULL,
  `meta_value` longtext,
  `field_id` int(11) NOT NULL,
  `item_id` int(11) NOT NULL,
  `created_at` datetime NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=200 DEFAULT CHARSET=utf8;

表格数据

INSERT INTO `wp_frm_item_metas` (`id`, `meta_value`, `field_id`, `item_id`, `created_at`) VALUES
(2072, '591.00', 198, 181, '2015-05-17 22:10:02'),
(1640, 'Complete', 253, 156, '2015-05-14 21:38:26'),
(1714, 'Complete', 253, 161, '2015-05-16 02:11:50'),
(1747, 'Complete', 253, 163, '2015-05-16 02:23:13'),
(1909, 'Complete', 253, 172, '2015-05-17 01:12:11'),
(2094, 'Yes', 278, 182, '2015-05-17 23:31:03'),
(2113, 'Yes', 278, 183, '2015-05-17 23:42:11'),
(2090, '2015-05-19', 212, 182, '2015-05-17 23:31:03'),
(2109, '2015-05-20', 212, 183, '2015-05-17 23:42:11'),
(2100, '106', 270, 182, '2015-05-17 23:31:03'),
(2119, '106', 270, 183, '2015-05-17 23:42:11');

SELECT sum(meta_value) 
  FROM wp_frm_item_metas 
  WHERE field_id=198 
    and meta_value=
     (select meta_value 
       from wp_frm_item_metas 
       where field_id=253 
         and meta_value="Complete") 
    and meta_value=
      (select meta_value 
        from wp_frm_item_metas 
        where field_id=278  
          and meta_value="Yes") 
    and meta_value=
      (select meta_value 
        from wp_frm_item_metas 
        where field_id=270 
          and meta_value=106). 

我尝试了这个查询,但它显示错误为:

Subquery returns more than 1 row

如何找到满足上述条件的“meta_value”字段的总和?

最佳答案

这将避免错误,并且可能是您真正想要的(尽管我看不到这些 field_ids 和 meta_values 之间的任何关系...)

SELECT sum(meta_value) 
  FROM wp_frm_item_metas 
  WHERE field_id=198 
    and EXISTS
     (select meta_value 
       from wp_frm_item_metas 
       where field_id=253 
         and meta_value="Complete") 
    and EXISTS
      (select meta_value 
        from wp_frm_item_metas 
        where field_id=278  
          and meta_value="Yes") 
    and EXISTS
      (select meta_value 
        from wp_frm_item_metas 
        where field_id=270 
          and meta_value=106)

关于mysql - 使用php查询计算字段总计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30295430/

相关文章:

mysql - Symmetricds:迁移或同步期间是否可以转换数据?

PHP MYSQL 防止数据库前端出现重复结果

mysql - 在MySQL中使用Join和Insert语句

mysql - SQL - 根据列的内容拆分表

Django动态模型设计

mysql - 在 macOS 上的 MYSQL 5.6.41 中分配 FOREIGN KEY

php - PHP 在 MySQL 上使用 SET 执行查询时出错

sql - Sparx EA : detect what database type currently using

mysql - 如果 LEFT JOIN 中没有值,如何返回 max 或 NULL

sql - 动态枢轴sql