2016-06-14 45 views
2

我有一個問題的探析與不同的數從一列行,這裏是我的數據庫和查詢如何從一數列與行不同的價值

$host = 'localhost'; 
$db = 'cbt'; 
$user = 'root'; 
$pass = ''; 

$dsn = "mysql:host=$host;dbname=$db"; 
$pdo = new PDO($dsn, $user, $pass); 

$matematika = 'MTK'; 
$soal_mtk = $pdo->prepare("select count(*) from cbt.data_ujian where data_ujian.id_mapel = :mtk"); 
$soal_mtk->bindParam(':mtk', $matematika, PDO::PARAM_STR, 12); 
$soal_mtk->execute(); 
$mtk = $soal_mtk->fetchColumn(); 

$fisika = 'FIS'; 
$soal_fis = $pdo->prepare("select count(*) from cbt.data_ujian where data_ujian.id_mapel = :fis"); 
$soal_fis->bindParam(':fis', $fisika, PDO::PARAM_STR, 12); 
$soal_fis->execute(); 
$fis = $soal_fis->fetchColumn(); 

$kimia = 'KIM'; 
$soal_kim = $pdo->prepare("select count(*) from cbt.data_ujian where data_ujian.id_mapel = :kim"); 
$soal_kim->bindParam(':kim', $kimia, PDO::PARAM_STR, 12); 
$soal_kim->execute(); 
$kim = $soal_kim->fetchColumn(); 

我可以指望這一切與一個查詢?請告訴我是否需要更多信息。謝謝你以前這麼多。

+0

是否有cbt.data_ujian和data_user之間的關係? – Strawberry

+0

不,沒有。我只想用一個查詢來計算mtk,fis和kim – ghabriel

+0

那麼,在您的問題頂部的表創建語句有什麼意義?! – Strawberry

回答

1

當然可以,你需要使用GROUP BY與WHERE條件。與此類似,

SELECT count(*), 
     data_ujian.id_mapel 
FROM cbt.data_ujian 
WHERE (data_ujian.id_mapel = :mtk 
     OR data_ujian.id_mapel = :fis 
     OR data_ujian.id_mapel = :kim) 
GROUP BY data_ujian.id_mapel 

上面的語句將組的結果通過id_mapel列,並給每個類別的count

+0

它似乎是從id_mapel返回的結果,它從最後一個id_mapel迴應,或者我錯誤地獲取它,但無論如何謝謝。 – ghabriel

+0

查看MySQL的'IN()'構造。 – Strawberry

+0

是的,我們也可以使用'IN()' –

0

如果我理解你的權利GROUP BY子句應該做你要求什麼:

SELECT count(*), id_mapel FROM cbt.data_ujian GROUP BY id_mapel 
0

嘗試下面的查詢 -

SELECT Sum(data_ujian.id_mapel = 'mtk') AS 'mtk', 
     Sum(data_ujian.id_mapel = 'fis') AS 'fis', 
     Sum(data_ujian.id_mapel = 'kim') AS 'kim', 
FROM cbt.data_ujian; 
相關問題