2016-09-25 91 views
-1

我有一张桌子。它有一些列:f1t,f2t,... to ... f18t。 而且我有$ id = 4。所以我想计算f?t他们= $ id。 也许f2t,f10t和f15t = $ id。所以计数将是3php选择字段数

我该如何做到这一点? 我想:

$sql2 = "SELECT (
(f1t = \"".$id."\")+ 
(f2t = \"".$id."\")+ 
(f3t = \"".$id."\")+ 
(f4t = \"".$id."\")+ 
(f5t = \"".$id."\")+ 
(f6t = \"".$id."\")+ 
(f7t = \"".$id."\")+ 
(f8t = \"".$id."\")+ 
(f9t = \"".$id."\")+ 
(f10t = \"".$id."\")+ 
(f11t = \"".$id."\")+ 
(f12t = \"".$id."\")+ 
(f13t = \"".$id."\")+ 
(f14t = \"".$id."\")+ 
(f15t = \"".$id."\")+ 
(f16t = \"".$id."\")+ 
(f17t = \"".$id."\")+ 
(f18t = \"".$id."\") 
) AS totalCount FROM ".TB_PREFIX."fdata WHERE vref = ".$_SESSION['wid']; 
$sql1 = mysql_query($sql2); 
echo "<br>".$sql1; 

感谢名单

+1

尚不清楚。共享示例输出。 –

+0

@ AT-2016我的意思是我想得到等于4的列数 –

+0

究竟哪一列和哪一列是4? –

回答

0

我觉得这个不能做,你应该改变你的表的结构,使F1T,F2T ...到... f18t将是行。然后,您可以轻松地通过计数操作员进行操作。

1

基于迄今为止我所理解的。

您需要使用+才能获得count

为了获得4发生在列f1t .... f8t所有行

SELECT 
( 
    (f1t = 4)+ 
    (f2t = 4)+ 
    (f3t = 4)+ 
    (f4t = 4)+ 
    (f5t = 4)+ 
    (f6t = 4)+ 
    (f7t = 4)+ 
    (f8t = 4) 
) AS totalCount 
FROM your_table 

See Demo

注:

由于MySQL的布尔表达式解析为0/1,让你可以在你的情况下使用它。

注意(a=b) returns 1 only if a is equal to b otherwise it returns 0


TEST:

-- ---------------------------- 
-- Table structure for `your_table` 
-- ---------------------------- 
DROP TABLE IF EXISTS `your_table`; 
CREATE TABLE `your_table` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    f1t INT, 
    f2t INT, 
    f3t INT, 
    f4t INT, 
    f5t INT, 
    f6t INT, 
    f7t INT, 
    f8t INT, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8; 

-- ---------------------------- 
-- Records of your_table 
-- ---------------------------- 
INSERT INTO `your_table` VALUES ('1', '2','3','4','4','1','8','4','9'); 
INSERT INTO `your_table` VALUES ('2', '2','8','1','5','4','8','4','9'); 
______ 

SELECT 
* 
FROM your_table; 

| id | f1t | f2t | f3t | f4t | f5t | f6t | f7t | f8t | 
|----|-----|-----|-----|-----|-----|-----|-----|-----| 
| 1 | 2 | 3 | 4 | 4 | 1 | 8 | 4 | 9 | 
| 2 | 2 | 8 | 1 | 5 | 4 | 8 | 4 | 9 | 

运行在这组数据,你会得到下面的输出上面给出的查询:

输出:

| totalCount | 
|------------| 
|   3 | 
|   2 | 

建议:规范化数据

+0

我做到了。但我得到这个'资源ID#177' –

+0

不明白。请解释。 – 1000111

+0

当我打印$ sql时,我得到了'资源ID#177'和177没有修复 –