表xyzには、componentsという行と、ここに示すようなlabref番号を持つlabref行があります
テーブルxyz
labref component
NDQA201303001 a
NDQA201303001 a
NDQA201303001 a
NDQA201303001 a
NDQA201303001 b
NDQA201303001 b
NDQA201303001 b
NDQA201303001 b
NDQA201303001 c
NDQA201303001 c
NDQA201303001 c
NDQA201303001 c
コンポーネントをグループ化し、返された3に等しい行をカウントしたいのですが、以下のSQLクエリを作成しましたが、コンポーネントごとに4を返す代わりに目標を達成するのに役立ちません
SELECT DISTINCT component, COUNT( component )
FROM `xyz`
WHERE labref = 'NDQA201303001'
GROUP BY component
クエリは返します
テーブルxyz
labref component COUNT(component)
NDQA201303001 a 4
NDQA201303001 b 4
NDQA201303001 c 4
私が今達成したいのは、上記の結果から、行がカウントされ、行の数として3が返されるということです。
あなたがする必要があります-
SELECT
COUNT(*)
FROM
(
SELECT
DISTINCT component
FROM
`multiple_sample_assay_abc`
WHERE
labref = 'NDQA201303001'
) AS DerivedTableAlias
@ hims056 here で示唆されているように、サブクエリを避けることもできます
サブクエリなしでこの簡単なクエリを試してください:
SELECT COUNT(DISTINCT component) AS TotalRows
FROM xyz
WHERE labref = 'NDQA201303001';
num_rows
。
この方法を使用して行う場合、クエリを変更する必要はありません。
if ($result = $mysqli->query("SELECT DISTINCT component, COUNT( component )
FROM `xyz`
WHERE labref = 'NDQA201303001'
GROUP BY component")){
/* determine number of rows result set */
$row_cnt = $result->num_rows;
printf("Result set has %d rows.\n", $row_cnt);
/* close result set */
$result->close();
}