Mam stolik z listy książek

+---------+-------------------------+------------------+-------------+-------+----------+
| ID      | Title                   | Writer           | Publisher   | year  | Status   |
+---------+-------------------------+------------------+-------------+-------+----------+
| S00001  | philosophy the intro    | K. Bertens.      | Kanisius    | 2018  | BOOKED   |
| S00002  | Karl Marx: Das Kapital  | Karl Marx        | el-Classica | 2017  | READY    |
| S00003  | Karl Marx: Das Kapital  | Karl Marx        | el-Classica | 2017  | READY    |
| S00004  | Karl Marx: Das Kapital  | Johann Luwiss    | Mediatama   | 2015  | READY    |
| S00005  | Marxis                  | Karl Marx        | Photoem     | 2019  | READY    |
| S00006  | Karl Marx: Das Kapital  | Karl Marx        | el-Classica | 2017  | BOOKED   |
| S00007  | philosophy the intro    | K. Bertens.      | Kanisius    | 2018  | READY    |
+---------+-------------------------+------------------+-------------+-------+----------+

Pierwszy i może wyświetlać liczbę z duplikatu tytułu i grupy pisarzy według TYTUŁU i autora, ale nie mogę pokazać LICZBA ze stanu, w którym jest „GOTOWY” w każdym wierszu.

Wynik powinien być taki

+-------------------------+-----------------+-------+------+
| Title                   | Writer          | Ready | stock|
+-------------------------+-----------------+-------+------+
| Marxis                  | Karl Marx       | 1     |    1 |
| Karl Marx: Das Kapital  | Johann Luwiss   | 1     |    1 |
| Karl Marx: Das Kapital  | Karl Marx       | 2     |    3 |
| philosophy the intro    | K. Bertens.     | 1     |    2 |
+-------------------------+-----------------+-------+------+
1
Fariq Maulana 16 grudzień 2019, 19:18
Cóż, pokaż nam, co możesz zrobić
 – 
Strawberry
16 grudzień 2019, 19:19
Lub po prostu usiądź i pozwól nam wykonać całą pracę za Ciebie
 – 
Strawberry
16 grudzień 2019, 19:23

1 odpowiedź

Użyj agregacji warunkowej:

select
    title,
    writer, 
    sum(status = 'READY') ready,
    count(*) stock
from books
group by title, writer

sum(status = 'READY') to fajny skrót MySQL do liczenia, ile rekordów spełnia warunek wewnętrzny (status = 'READY'). Opiera się na fakcie, że w kontekście liczbowym MySQL ocenia prawdziwy warunek jako 1 (a fałszywy warunek jako 0).

1
GMB 16 grudzień 2019, 19:21