Scritto da:
> le menti supreme della combriccola pedona non hanno capito un cazzo del database disegnato da achille e giambo
> hanno scritto codice di merda non l'hanno testato ma hanno istallsto uguale
> quando tutto è andato a puttane sono andati a piangere du stackowerflow
>
> il forum ha funzionato perfettamente per anni
> siamo messi bene
!
>
Questa è la tabella "messages".
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| text | longtext | NO | MUL | NULL | |
| date | datetime | NO | MUL | NULL | |
| subject | tinytext | NO | MUL | NULL | |
| threadId | int(11) | NO | MUL | NULL | |
| parentId | int(11) | NO | MUL | NULL | |
| author | varchar(256) | YES | MUL | NULL | |
| forum | varchar(256) | YES | MUL | NULL | |
| visible | tinyint(1) | NO | | 1 | |
| rank | int(11) | NO | | 0 | |
| fakeAuthor | varchar(256) | YES | | NULL | |
+------------+--------------+------+-----+---------+----------------+
Le sezioni venivano salvate nel campo forum, che non è una foreign key. Non esisteva una tabella per le sezioni del forum.
Questa che cosa significa? Che non poteva esistere una sezione senza messaggi.
Che cosa c'è da capire a parte il fatto che il database non era normalizzato, inadeguato per poter creare una gestione come si deve delle sezioni?
La per scaricare la sezioni prima era così...
public List<String> getForums() {
Result<Record1<String>> records = jooq.select(MESSAGES.FORUM)
.from(MESSAGES)
.where(MESSAGES.FORUM.isNotNull())
.groupBy(MESSAGES.FORUM)
.orderBy(DSL.count(MESSAGES.ID).desc(), MESSAGES.FORUM.asc())
.fetch();
List<String> res = new ArrayList<String>(records.size());
for (Record1<String> record : records) {
res.add(record.getValue(FORUMS.ID));
}
return res;
}Adesso è così... ed è oggettivamente migliore.
Result<Record1<String>> records = jooq.select(FORUMS.ID)
.from(FORUMS)
.leftOuterJoin(MESSAGES)
.on(FORUMS.ID.eq(MESSAGES.FORUM))
.groupBy(FORUMS.ID)
.orderBy(DSL.count(FORUMS.ID).desc())
.fetch();
In realtà quello che penso io è che il codice che ho scritto non era sbagliato, solo che non era quello che il codice che stava girando. Testerò l'ipotesi.
Re: Mentre i due snowflake starnazzano