Importare karma_good in thanks_count (mySQL)

Aperto da Flavio93Zena, Mercoledì - 30 Marzo 2016 - 20:25

0 Utenti e 1 Visitatore stanno visualizzando questa discussione.

Flavio93Zena

http://custom.simplemachines.org/mods/?mod=1129
Questa mod installa un sistema di reputazione. Tagliando corto non funziona correttamente per qualche ragione, e fa abbastanza schifo in ogni caso, per cui volevo installare la classica e meglio scritta SayThanks (http://custom.simplemachines.org/mods/index.php?mod=3898).
Il punto è non perdere i valori di Karma (solo quello positivo, quello negativo è disabilitato)... Ora, detti valori sono nella tabella smf_members, che ha come colonne id_member e karma_good. La mod di saythanks aggiunge la tabella messages_thanks_stats che conteggia appunto i grazie ricevuti.
Ponendo che non mi frega di avere la notifica di ringraziamento per ogni singolo post passato, vorrei letteralmente disinstallare l'advanced reputation mod, installare la SayThanks, e copiare e incollare le colonne id_member e karma_good dalla tabella smf_members in messages_thanks_stats, per poi rinominare karma_good in thanks_count, facendola diventare il numero di thanks ricevuti.
Il mio problema è, come al dannato solito, la query mySQL. Come faccio a fare detto copia/incolla?
Ricapitolando:
Tabella origine: smf_members
Tabella destinazione: smf_messages_thanks_stats
Colonne origine: id_member + karma_good
Colonne destinazione (da creare, o sostituire, non mi interessa): id_member + thanks_count

Grazie in anticipo.


Flavio93Zena

Non ho la possibilità di fare prove, per cui devo essere sicuro al 100% di scrivere la query correttamente.
INSERT INTO smf_messages_thanks_stats(id_member, thanks_count)
SELECT  FROM smf_members

Così? Ora che ci faccio caso... In smf_members la colonna ID_MEMBER è in maiuscolo, mentre è in minuscolo in smf_messages_thanks_stats... Ho idea che farà differenza pure quello ._.

emanuele

Citazione di: Flavio93Zena il Mercoledì - 30 Marzo 2016 - 22:45
Non ho la possibilità di fare prove, per cui devo essere sicuro al 100% di scrivere la query correttamente.
Scrivere la query correttamente è solo metà del problema... e la metà meno importante.
La prima cosa da fare è capire la struttura delle tabelle per non creare inconsistenze di cui potresti pentirti un giorno.

Devo installarli entrambi e vedere come funzionano.

Flavio93Zena

#4
INSERT INTO smf_messages_thanks_stats(id_member, thanks_count)
SELECT ID_MEMBER, karmaGood FROM smf_members

Questa è partita ma ho un altro problema apparentemente, oltre alla struttura (a me paiono INT normali con NULL di valore predefinito nel thanks_count). Qualsiasi tabella del database viene mostrata solo e soltanto fino alla 1739esima riga, non compare nulla di quelle successive (wtf?!?!). Oltretutto, la query ha inserito circa 1700 righe (dice 1711), e l'ultimo ID_MEMBER che compare è (ancora) il 1739.
Se può essere rilevante per qualcosa... Il php.ini ha questo all'interno (e non ha cambiato nulla, purtroppo):

max_execution_time = 180;
max_input_time = 60;
memory_limit = 256M;

Altra nota... Il mio database ha karma_good, mentre quello sul quale sto lavorando ha karmaGood, potenzialmente la mod della reputazione modifica il nome O.o ... ... Perchè? -_-

EDIT: il problema al database era per un casino dell'host, il database era su un account diverso, sempre dello stesso utente (rofl).
Il fatto della query rimane, teoricamente funziona (e apparentemente anche in pratica), ma apprezzerei moltissimo una conferma sulla struttura.

EDIT2: ho dovuto procedere e pare funzionare (wew), ma se hai qualcosa da ridire in merito dimmelo ema... In smf_members sono due colonne int(8) mentre in quella dei thanks diventano mediumint(9), non credo che faccia un casino, essendo ambedue integer e similissimi.

emanuele

php.ini == configurazione di php
mysql != php
Giusto come promemoria.

Oh beh, se funziona non mi metto certo a rifare il lavoro. :P

L'unica cosa che mi fa venire dubbi è che la query che hai scritto qui sopra ha i campi in stile 1.1 (camelCase), mentre in precedenza apparivano 2.0-like (underscore).

Flavio93Zena

Giusta osservazione, il motivo era che il database che avevo in mano era quello errato, per un problema dell'host, che è stato risolto :)
Difatti la query che ho *realmente* fatto sul *vero* database è stata:
INSERT INTO smf_messages_thanks_stats(id_member, thanks_count)
SELECT ID_MEMBER, karma_good FROM smf_members
e pare aver fatto il suo lavoro, facendo qualche thanks a casaccio si aggiorna correttamente :) Grazie!

E... Sì, pensavo anch'io fosse completamente inutile il php.ini in quel caso, ma ho provato tutto xD

Discussioni simili (3)