Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

lọc kết quả theo hai tùy chọn đã chọn

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

Bạn có thể thêm các bộ lọc sau trước GROUP BY :

  • Năm:WHERE YEAR(a.ad_birthday) = '2012'
  • Quốc gia:WHERE b.country = 'Albania'

Hãy xem đang hoạt động .

Sau đó, sau khi bạn chuyển đổi mysql_ của mình chức năng của mysqli_ hoặc PDO (vì nó đang được không dùng nữa ), bạn có thể chỉ cần hiển thị kết quả theo giới tính:

| GENDER | COUNT |
------------------
| Female |     2 |
|   Male |     1 |

Cập nhật 1

Để triển khai mã này, bạn có thể thử một cái gì đó như sau (không được thử nghiệm):

$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);

Cập nhật 2

Vì bạn không thể sử dụng mysqli vì một số lý do, mã bên dưới sẽ hoạt động. Xin lưu ý rằng nó giả định rằng quốc gia đó không trống.

$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. Nhập từ MySQL sang Hive bằng Sqoop

  2. Làm thế nào để thiết lập điều kiện trong đoạn mã sau đây để đánh dấu trang hiện tại trong phân trang?

  3. Tại sao lịch sự kiện mysql không hoạt động trong localhost cơ sở dữ liệu?

  4. Nhiều MySQL Table JOINS cần ghép các kết quả của 1 bảng vào một trường cột duy nhất

  5. Khóa ngoại MySQL InnoDB giữa các cơ sở dữ liệu khác nhau