• User Attivo

    Select multiplo...

    Scusate ma capendoci poco di php/mysql non so se ho scritto un titolo adatto.
    Il mio problema è questo, ovvero far sì che mi peschi tutti i valori prefixid non solo con X ma anche con Y e Z... come si fa?
    Grazie

    WHERE thread.threadid IN(" . implode(',', $newstids) . ") AND thread.prefixid = 'X'


  • ModSenior

    Ciao Cerbero,

    se ho ben capito il tuo problema, dovresti fare cosi:

    
    WHERE thread.threadid IN(" . implode(',', $newstids) . ") AND (thread.prefixid = 'X' OR thread.prefixid = 'Y' OR thread.prefixid = 'Z')
    
    

  • User Attivo

    Ho risolto in altro modo, ovvero così:

    WHERE thread.threadid IN(" . implode(',', $newstids) . ") AND thread.prefixid IN (''X', 'Y')
    Grazie mille comunque...

    Ora però ho un altro problemino, ovvero vorrei ordinare la lettura dei valori, secondi i valori presenti in un'altra tabella...
    Ecco il codice... ho provato ad inserire l'ORDER BY direttamente (prefix.displayorder) ma evidentemente gli manca qualcosa in SELECT...

    SELECT $ratingsql user.*, thread.threadid, post.title, thread.replycount, postusername, postuserid, thread.dateline AS postdateline, sticky, thread.attach, thread.lastpostid, thread.lastposter, thread.lastpost, IF(views<=thread.replycount, thread.replycount+1, views) AS views, thread.forumid, post.postid, pagetext
    $vba_news_fields
    FROM " . TABLE_PREFIX . "thread AS thread
    LEFT JOIN " . TABLE_PREFIX . "post AS post ON (post.postid = thread.firstpostid)
    LEFT JOIN " . TABLE_PREFIX . "user AS user ON (user.userid = post.userid)
    $vba_news_join
    WHERE thread.threadid IN(" . implode(',', $newstids) . ") AND thread.prefixid IN ('Dicembre_2009', 'Gennaio_2010', 'Febbraio_2010', 'Marzo_2010', 'Aprile_2010', 'Maggio_2010', 'Giugno_2010', 'Luglio_2010', 'Agosto_2010', 'Settembre_2010', 'Ottobre_2010', 'Novembre_2010', 'Dicembre_2010')
    " . iif(!$threadsqueried AND $mod_options['portal_news_cutoffdate'], 'AND thread.dateline > ' . (TIMENOW - ($mod_options['portal_news_cutoffdate'] * 86400))) . "
    " . iif($ignusers, 'AND thread.postuserid NOT IN(' . $ignusers . ')') . "
    " . iif($mod_options['portal_applypermissions'], $forumperms_query) . "
    ORDER BY prefix.displayorder
    ");


  • User Attivo

    Nessuno che possa aiutarmi? La credevo una modifica facile per chi ha un pò di dimestichezza con php/sql.


  • User Attivo

    Non capisco... è difficile o cosa? Ditemi almeno se dovrei rivolgermi ad un esperto a pagamento.
    Grazie


  • User Newbie

    In teoria la tabella prefix dovrebbe essere nelle join, si trova in $vba_news_join?


  • User Attivo

    Allora:
    prefix è una tabella db mysql
    displayorder un campo di quest'ultima (ordine dei prefissi delle discussioni vbulletin).
    Praticamente è una pagina del cmps vbulletin in cui compaiono unicamente le discussioni con un certo prefisso. Io vorrei che venissero ordinate nella visualizzazione per numero di prefisso (oppure se fosse possibile farlo manualmente tipo ORDER BY a,b,c,d)
    Grazie


  • User Newbie

    Vediamo se riesco a spiegarmi bene.

    Qualsiasi campo che vuoi utilizzare nella SELECT piuttosto che nella WHERE o nella ORDER BY, appartiene ad una tabella particolare che, per causa di forza maggiore, deve essere contenuta nella FROM della query stessa o direttamente o in una JOIN contenuta in essa.

    Ora se tu vuoi ordinare i risultati per il campo displayorder che si trova nella tabella prefix, quest'ultima dovrebbe trovarsi in una JOIN della query, cosa che non accade nella query che hai postato a meno che questa JOIN non venga specificata nella variabile $vba_news_join.
    Se non si trova nella variabile, significa che devi inserirla a mano con una propria condizione di JOIN.

    Sono stato spiegato? 🙂


  • User Attivo

    Ok, è che ne capisco veramente poco di php e mysql... comunque sì... devo creare la JOIN.