SELECT c.gender, COUNT(*) AS 'count'
FROM ads a
INNER JOIN
(SELECT fieldvalue, fieldtitle AS country FROM field_values) b
ON b.fieldvalue = a.ad_country
INNER JOIN
(SELECT fieldvalue, fieldtitle AS gender FROM field_values) c
ON c.fieldvalue = a.ad_gender
GROUP BY c.gender
आप GROUP BY
. से पहले निम्न फ़िल्टर जोड़ सकते हैं :
- वर्ष:
WHERE YEAR(a.ad_birthday) = '2012'
- देश:
WHERE b.country = 'Albania'
इसे देखें कार्रवाई में ।
फिर अपने mysql_
. को कन्वर्ट करने के बाद mysqli_
. के लिए कार्य करता है या PDO
(क्योंकि इसे बहिष्कृत
किया जा रहा है ), आप केवल लिंग के आधार पर परिणाम प्रदर्शित कर सकते हैं:
| GENDER | COUNT | ------------------ | Female | 2 | | Male | 1 |
अपडेट 1
इस कोड को लागू करने के लिए, आप कुछ इस तरह की कोशिश कर सकते हैं (परीक्षण नहीं किया गया):
$link = mysqli_connect("localhost", "user_name", "password", "stock");
if (mysqli_connect_error()) {
die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error());
}
$stmt = mysqli_prepare($link, "SELECT c.gender, COUNT(*) AS 'count' FROM ads a
INNER JOIN (SELECT fieldvalue, fieldtitle AS country FROM field_values) b ON b.fieldvalue = a.ad_country
INNER JOIN (SELECT fieldvalue, fieldtitle AS gender FROM field_values) c ON c.fieldvalue = a.ad_gender
WHERE b.country = ? AND (YEAR(a.ad_birthday) = ? OR YEAR(a.ad_birthday) <> NULL) GROUP BY c.gender");
mysqli_bind_param($stmt, 'ss', $country, $year) or die(mysqli_error($dbh));
$result = mysqli_stmt_execute($stmt) or die(mysqli_error($link));
while($row = mysqli_fetch_assoc($result)) {
echo "There are " . $row[count] . ' ' . $row[gender] . "<br />\n";
}
mysqli_close($link);
अपडेट 2
चूंकि आप mysqli
. का उपयोग करने में असमर्थ हैं किसी कारण से, नीचे दिया गया कोड काम करना चाहिए। कृपया ध्यान दें कि यह मानता है कि देश खाली नहीं है।
$query = "SELECT c.gender, COUNT(*) AS 'count' FROM ads a
INNER JOIN (SELECT fieldvalue, fieldtitle AS country FROM field_values) b ON b.fieldvalue = a.ad_country
INNER JOIN (SELECT fieldvalue, fieldtitle AS gender FROM field_values) c ON c.fieldvalue = a.ad_gender
WHERE b.country = " . mysql_real_escape_string($country);
if(isset($year)) $query .= " AND YEAR(a.ad_birthday) = " . mysql_real_escape_string($year);
$query .= ' GROUP BY c.gender';
$sql2 = mysql_query($query);
while($row = mysql_fetch_assoc($sql2)) {
echo "There are " . $row[count] . ' ' . $row[gender] . "<br />\n";
}