2016-09-25 74 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沒有修復 –