Mysql
 sql >> Baza danych >  >> RDS >> Mysql

filtrowanie wyników według dwóch wybranych opcji

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

Możesz dodać następujące filtry przed GROUP BY :

  • Rok:WHERE YEAR(a.ad_birthday) = '2012'
  • Kraj:WHERE b.country = 'Albania'

Zobacz go w akcji .

Następnie po przekonwertowaniu mysql_ funkcje do mysqli_ lub PDO (ponieważ jest przestarzałe ), możesz po prostu wyświetlić wynik według płci:

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

Aktualizacja 1

Aby zaimplementować ten kod, możesz spróbować czegoś takiego (nie testowano):

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

Aktualizacja 2

Ponieważ nie możesz używać mysqli z jakiegoś powodu poniższy kod powinien działać. Pamiętaj, że zakłada się, że kraj nie jest pusty.

$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. Zatrzymaj zapytanie przez pdo

  2. Bezpieczeństwo podstawowe, PHP mySQl

  3. wampserver 2.2 64x nie mógł wykonać pozycji menu (błąd wewnętrzny) [Wyjątek] Nie można wykonać akcji uruchomienia:nazwa katalogu jest nieprawidłowa

  4. OperationalError:(1045, odmowa dostępu dla użytkownika 'rajendra'@'localhost' (przy użyciu hasła:NIE))

  5. Nie wszystkie parametry zostały użyte w instrukcji SQL podczas korzystania z pythona i mysql