Ici, j'ai deux tables, (trip_details
& trip_member
), ma condition est basée sur tripId
. Je veux que le nombre actuel d'employés et le nombre d'employés absents soient comptés. Dans le tableau trip_member
j'ai stocké tripId
(foriegnkey), empId
, empPresentStatus
. empPresentStatus= '1'
signifie qu'il est absent, empPresentStatus ='0'
signifie est présent.Comment prendre deux comptes résultat de la deuxième table en utilisant MySQL JOIN
trip_details
tripId allocationId tripStatus
1 1 1
2 1 1
trip_member
id tripId empId empPresentStatus
1 1 G2E201 0
2 1 G2E202 0
3 1 G2E203 1
4 2 G2E204 0
5 2 G2E205 1
basé sur ma structure de table, combien de salariés présents dans le voyage et combien de salariés absents dans le voyage, Je veux prendre le compte.
J'ai essayé
$mysql = mysql_query("SELECT a.tripId, a.cabNo, COUNT('b.*') AS absentCount FROM trip_details a LEFT JOIN trip_member b ON a.tripId = b.tripId WHERE b.empPresentStatus = '1' AND a.tripStatus ='1' GROUP BY a.tripId");
while ($row = mysql_fetch_assoc($mysql)) {
$data[] = $row;
} // my requirement is based on tripId I want take the employee present count and emplyee absent count, in trip_member table I stored tripId (forienkey),empId,empPresentStatus.here come to know like empPresentStatus= '1' means he is absent, suppose empPresentStatus ='0' means is present.
$arrayName = array('status' => 'success', 'data' =>$data);
echo json_encode($arrayName);
sortie Je reçois
{
"status": "success",
"data": [
{
"tripId": "1",
"cabNo": "CBX100",
"absentCount": "1"
},
{
"tripId": "2",
"cabNo": "CBX101",
"absentCount": "1"
}
]
}
Jusqu'à présent, ok. Je veux prendre le compte combien d'employés sont présents dans le voyage. Je ne sais pas comment prendre ce compte, si quelqu'un sait, cela signifie mettre à jour ma réponse.
Résultats attendus
{
"status": "success",
"data": [
{
"tripId": "1",
"cabNo": "CBX100",
"absentCount": "1",
"presentCount": "2"
},
{
"tripId": "2",
"cabNo": "CBX101",
"absentCount": "1",
"presentCount": "1"
}
]
}
Table Mise à jour (cab_allocation)
allocationId shiftTiming routeId cabId
1 1 1 CBX100
2 1 1 CBX101
N'est-ce pas facile si vous avez une autre colonne comme 'empAbsentStatus' et sera plus facile de le faire en une seule requête. – Sand