Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    393

    [sql] ottimizzare query

    ho una tabella "cd":

    ID__name______prezzo
    1___bon jovi____16.00
    2___dire straits__18.00
    3___madonna___20.00

    e una "canzoni":

    ID__canzone______idalbum
    1___canto per te__1
    2___balla per me___1
    3___off or up______2
    4___more you_____3
    5___office________1

    attualmente se voglio stampare tutti gli album e tutte le canzoni di ogni album uso una query che mi elenca tutti gli album e una per ogni album per elencare ogni canzone:

    Codice PHP:
    $query "    
    SELECT ID, price, name
    FROM cd
    "
    ;                                    
    $result mysql_query($query$db); 


    while (
    $row mysql_fetch_array($result)):
        echo 
    $row['name'].'
    '
    ;
        
    $query2 "    
        SELECT canzone
        FROM canzoni
        WHERE idalbum = 
    $row['ID']
        "
    ;                                    
        
    $result2 mysql_query($query2$db); 
        while (
    $row2 mysql_fetch_array($result2)):
            echo 
    $row2['canzone'].'
    '
    ;
        endwhile; 
    endwhile; 
    E' pesante come metodo? C'è un metodo più leggero per il databse? Tipo che ne so fare tutto in un'unica query...?

    Grazie

  2. #2
    fai una query con inner join

    Codice PHP:
    $query "    
    SELECT cd.ID, cd.price, cd.name, canzoni.canzone
    FROM cd
    inner join canzoni ON cd.ID = canzoni.idalbum
    "
    ;  
                                      
    $result mysql_query($query$db) or die(mysql_error());

    while (
    $row mysql_fetch_assoc($result)) {
        echo 
    $row['name']. ' - ' .$row['canzone'] . '
    '
    ;


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Puoi fare come ti ha detto piero, ma tieni presente che in questo modo ti uscirà il nome dell'album ripetuto con ciascuna delle sue canzoni, per cui se non vuoi stamparlo così dovrai preoccuparti di elaborare l'output della query.
    In pratica devi decidere cosa ti rompe meno

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    393
    Sì beh certo l'avevo capito
    Quello che mi interessa però è cercare di essere il meno pesante possibile per le query al db...sono due cose equivalenti o la seconda proposta è più "leggera"?

  5. #5
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Beh, fa una query sola invece di n, per il db è sicuramente meglio

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 © 2024 vBulletin Solutions, Inc. All rights reserved.