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

Filtruj uczniów, którzy jeszcze nie zaliczyli przedmiotu

Sugerowałbym użycie agregacji:

SELECT `Reg.No`, SubjectCode, SUM(`Pass/Fail` = 'Pass')
FROM results
GROUP  BY `Reg.No`, SubjectCode
HAVING SUM(`Pass/Fail` = 'Pass') = 0;

HAVING klauzula zlicza liczbę wyników dla każdego ucznia i kursu, gdzie ostatnia kolumna to 'Pass' . W MySQL wartości logiczne są traktowane jako liczby całkowite w kontekście numerycznym, gdzie true wynosi 1. Tak więc sum( Zaliczony/niezaliczony= 'Pass') zlicza, ile razy student zaliczył kurs. = 0 mówi, że uczeń nigdy nie zaliczył kursu.

Proponujemy nie umieszczać znaków specjalnych, takich jak / i . w nazwach kolumn. Wymaga to ucieczki od kolumn i po prostu utrudnia pisanie kodu, ponieważ jest wypełniony znakami.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tabele InnoDB istnieją w MySQL, ale mówi, że nie istnieją po skopiowaniu bazy danych na nowy serwer

  2. Ile kolumn możesz mieć (maksymalnie) w tabeli MySQL?

  3. MySql — sposób na aktualizację fragmentu ciągu?

  4. Mnożenie wyników podzapytań MySQL

  5. Jak uniknąć niejawnej konwersji MySQL (Obcięta niepoprawna wartość PODWÓJNA)