+-----+-----+----+----+----+----+----+----+
| Uid | Q1 | Q2 | Q3 | Q4 | Q5 | Q6 | Q7 |
+=====+=====+====+====+====+====+====+====+
| 1 | 1 | 0 | 1 | 0 | 1 | 1 | 0 |
+-----+-----+----+----+----+----+----+----+
这是我的数据库的结构。我想获取uid = $_SESSION['Uid']
的列数。
我想要Q1, Q2, Q5, Q7
之间存在0的列数
像这样的东西,(不是一个只供参考的查询)
$Uid = $_SESSION['Uid'];
$result = mysql_query("SELECT Q1, Q2, Q5, Q7 FROM userdata WHERE Uid = '$Uid' && have 0");
echo mysql_num_fields($result);
所以它会返回2 或者这可以通过使用计数功能来解决。 或者,在为该特定用户选择所有字段后,我应该如何转换或创建这样的新表?
+----+----+
| Q | A |
+====+====+
| Q1 | 1 |
+====+====+
| Q2 | 0 |
+====+====+
| Q3 | 1 |
+====+====+
| Q4 | 0 |
+====+====+
| Q5 | 1 |
+====+====+
| Q6 | 1 |
+====+====+
| Q7 | 0 |
+====+====+
答案 0 :(得分:1)
您可以将IF
:
SELECT IF(Q1=0,1,0) + IF(Q2=0,1,0) + IF(Q5=0,1,0) + IF(Q7=0,1,0) as total
FROM userdata WHERE Uid = '$Uid';
输出:
+-------+
| total |
+-------+
| 2 |
+-------+
答案 1 :(得分:0)
您应该检查每个字段是否为0
SELECT Q1, Q2, Q5, Q7
FROM userdata WHERE Uid = '$Uid' AND (Q1=0 OR Q2=0 OR Q5=0 OR Q7=0)
答案 2 :(得分:-1)
您可以对您的表进行UNPIVOT并进行查询。
this link描述了mysql中的univoting。如果您的表列是动态的和/或您需要生成复杂的报告,这将非常有用。