Pagina 1 di 11 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 105
  1. #1

    Ottimizzare (riscrivere) un po' di query

    Dovrei ottimizzare un po' di query (ho provato a contattare guidoz, ma non ha voluto aiutarmi )
    sono un po' arrugginito (troppi CSS)...

    cominciamo con la prima:
    Codice PHP:
    $result mysql_query("SELECT id_tags,nome FROM tags WHERE LOWER(nome) LIKE LOWER('$item%') ORDER BY nome");
                        
                        if(
    mysql_num_rows($result) != 0){
                                
    $risposta '<table><th>Tag</th><th>Numero risorse</th>';
                                while (
    $row mysql_fetch_array($result)) {
                                    
    $id_tag $row[0];
                                    
    $nome $row[1];
                
                                    
    // avendo id_tags ricavo id_risorse (le risorse che hanno assegnati quei tag)
                                    
                                    
    $id_risorse mysql_query("SELECT id_risorse FROM tags2risorse WHERE id_tags = $row[0]");
                                    
    $n_risorse mysql_num_rows($id_risorse);
                                        
                                        
    $risposta .="<tr><td><a href=\"tag_dettagli.php?id=$id_tag\">$nome</a></td><td>$n_risorse</td></tr>";
                                }
                                
    $risposta .= '</table>'
    mi sapete aiutare?

    grazie

  2. #2
    mysql_fetch_array è il più pesante e inutile tra i comandi di fetch
    O fetch_row o fetch_assoc, entrambi non serve a niente.

    Per la query, non ho capito perché annidarle (se hai 100 risultati dalla prima fai 100 query? ), è una semplice join

    SELECT quellochetipare FROM tags, tags_risorse WHERE etc. etc. etc.

  3. #3
    Originariamente inviato da skidx
    mysql_fetch_array è il più pesante e inutile tra i comandi di fetch
    O fetch_row o fetch_assoc, entrambi non serve a niente.

    Per la query, non ho capito perché annidarle (se hai 100 risultati dalla prima fai 100 query? ), è una semplice join

    SELECT quellochetipare FROM tags, tags_risorse WHERE etc. etc. etc.
    allora per te sarà una SEMPLICE join per me invece no
    adesso provo a spaccarmici la testa

  4. #4
    Originariamente inviato da andrea.paiola
    adesso provo a spaccarmici la testa
    te l'ho già scritta, aggiungici le condizioni al where che già avevi nelle altre due query

  5. #5
    Originariamente inviato da skidx
    te l'ho già scritta, aggiungici le condizioni al where che già avevi nelle altre due query
    Codice PHP:
    $result mysql_query("SELECT tags.id_tags,tags.nome,tags2risorse.id_risorse FROM tags,tags2risorse WHERE LOWER(nome) LIKE LOWER('$item%') ORDER BY tags.nome"); 
    non mi funzia

    l'ho provata su PHPMyAdmin mettendo il valore della variabile $item a manina e mi da l'errore:
    #1267 - Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation 'like'

  6. #6
    ho detto LE condizioni di where, non LA.

    Manca la condizione di join, tags.id_tags = tags2risorse.id_tags

  7. #7
    Originariamente inviato da skidx
    ho detto LE condizioni di where, non LA.

    Manca la condizione di join, tags.id_tags = tags2risorse.id_tags
    dove la metto?

  8. #8
    nel where con le altre (in and ovviamente)

  9. #9
    così?
    Codice PHP:
    $result mysql_query("SELECT tags.id_tags,tags.nome,tags2risorse.id_risorse FROM tags,tags2risorse WHERE tags.id_tags = tags2risorse.id_tags AND LOWER(nome) LIKE LOWER('$item%') ORDER BY tags.nome"); 

  10. #10

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.