Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

दो चुनिंदा विकल्पों द्वारा परिणामों को फ़िल्टर करना

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";
}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CHAR () MySQL में उदाहरण

  2. एसक्यूएल का उलटा '% मान%' पसंद है

  3. मेरे कोडनिर्देशक पासवर्ड रीसेट फ़ंक्शन को कैसे सुरक्षित बनाया जाए?

  4. बाएं जॉइन के साथ गणना केवल एक पंक्ति दिखाती है

  5. क्या MySQL क्वेरी में टेबल और कॉलम के आसपास उद्धरण वास्तव में आवश्यक हैं?