[OT] Query MYSQL

3 views
Skip to first unread message

Davide Morelli

unread,
Jun 12, 2013, 9:28:03 PM6/12/13
to zb-p...@googlegroups.com
Ciao all, sono un po' offtopic lo so'.

Allora. 

Ho una tabella smf_messages ed una tabelle smf_topic
La join che le lega è su : t.id_first_msg = m.id_msg
Praticamente faccio: 

SELECT * 
FROM `smf_topics` t
JOIN smf_messages m ON t.id_first_msg = m.id_msg

(Ho trovato i topic).

Ora necessiterei di prendere tutti i risultati di smf_messages (m) che pero' non sono uguali a t.id_first_msg. 
Ci potrei riuscire con un "where id_msg NOT IN (select id_first_msg from topics)", ma mi chiedevo se ci fosse una versione più corretta.

M.

--
Michel 'ZioBudda' Morelli                       mic...@ziobuddalabs.it
Sviluppo applicazioni CMS DRUPAL e web dinamiche (LAMP+Ajax)
Telefono: 0200619074
Mobile: +39-3939890025 --  Fax: +39-0291390660

http://www.ziobudda.net                          
http://www.ziobuddalabs.it                      Skype: zio_budda
                                                               Twitter: ziobudda
                                                

RedFoxy

unread,
Jun 13, 2013, 2:26:20 AM6/13/13
to zb-p...@googlegroups.com

Il giorno 13/giu/2013, alle ore 03:28, Davide Morelli <mic...@ziobuddalabs.it> ha scritto:

Ora necessiterei di prendere tutti i risultati di smf_messages (m) che pero' non sono uguali a t.id_first_msg. 
Ci potrei riuscire con un "where id_msg NOT IN (select id_first_msg from topics)", ma mi chiedevo se ci fosse una versione più corretta.


corretto è corretto ma poi dipende che devi fare e le necessità… teoricamente puoi anche usare una sfilza di != o mettere i dati da escludere in una tabella per toglierli etc… ma tutto dipende a che ti serve…

Davide Morelli

unread,
Jun 13, 2013, 3:13:59 AM6/13/13
to zb-p...@googlegroups.com
Ciao, sto trasferendo un forum realizzato con Simple Machine Forum in Drupal.

SMF ha una tabella dove ha i dati del topic (id del messaggio iniziale, numero di visite, quando è stato creato, se è attivo, altre informazioni) ed ha una tabella dei messaggi, tra cui anche il messaggio iniziale
Drupal invece gestisce il primo post come un contenuto e le risposte come dei commenti. 


Quindi nel primo passaggi creo i vari "primi post" basandomi sul "id_first_msg" presente nel "topic" e nel secondo creo i commenti basandomi tu tutti i messaggi che hanno lo stesso "id_topic", ma ovviamente il primo messaggio fa parte del "topic" quindi verrebbe ripetuto anche nei commenti.

So' che sembra strana come cosa ed un doppio lavoro, ma sto utilizzando un modulo/piccolo framework chiamato Migrate per importare i dati e ad esempio con queste poche righe di asocciazione: 
    $this->addFieldMapping('title','subject');
    $this->addFieldMapping('body', 'body')->arguments(array('format' => 'filtered_html'));
    $this->addFieldMapping('field_old_id','old_id');
    $this->addFieldMapping('taxonomy_forums','id_cat')->arguments(array('source_type' => 'tid'));
    $this->addFieldMapping('created','poster_time');
    $this->addFieldMapping('changed','modified_time');
    $this->addFieldMapping('status','approved');
    $this->addFieldMapping("uid","uid2");
    $this->addFieldMapping("totalcount","num_views");
    $this->addFieldMapping("pathauto")->defaultValue(0);

mi viene creato il primo post con la data nel passato, mi viene associato all'utente (io passo a Migrate l'ID dell'utente sul DB vecchio e lui me lo traduce con l'ID nuovo), viene settata la categoria del forum corretta (ed anche in questo caso io passo la categoria che ho sul db, e MIGRATE me la trasforma nella nuova creata in precedenza), ed altre cose. Con la funzioanlità di Rollback. Se usate Drupal e dovete importare vecchi dati è il modulo che fa per voi. 

Per prova ho utilizzato il "NOT IN" :

$query->where ('m.id_msg not in (SELECT id_first_msg FROM smf_topics) and m.id_topic <= 1544');

e considerando che i messaggi non sono tantissimi non ci mette poi molto. E' anche una situazione di import quindi anche aspettare quei 2-3 secondi prima che inizi l'import non è poi una gran perdita. 

RedFoxy

unread,
Jun 13, 2013, 8:34:07 AM6/13/13
to zb-p...@googlegroups.com

Il giorno 13/giu/2013, alle ore 09:13, Davide Morelli <mic...@ziobuddalabs.it> ha scritto:

Ciao, sto trasferendo un forum realizzato con Simple Machine Forum in Drupal.

mi sembra che ci siano dei sistemi per collegare e trasferire SMF, se no in caso ti conviene fare un sistema che si colleghi alle api del forum di destinazione e usare quello per fare il trasferimento se no devi tenere conto di tutti i dati che va a toccare quando credi un messaggio
Reply all
Reply to author
Forward
0 new messages