Visualizzazione dei risultati da 1 a 10 su 26

Discussione: Join consiglio

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di MySQL
    Registrato dal
    May 2015
    Messaggi
    729
    la query precedente è inefficiente per le versioni più vecchie di mysql conviene controllare explain

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    539
    Quote Originariamente inviata da MySQL Visualizza il messaggio
    la query precedente è inefficiente per le versioni più vecchie di mysql conviene controllare explain
    quanto inefficiente ? nanosecondi ?

  3. #3
    Utente di HTML.it L'avatar di MySQL
    Registrato dal
    May 2015
    Messaggi
    729
    Quote Originariamente inviata da marino51 Visualizza il messaggio
    quanto inefficiente ? nanosecondi ?
    a seconda della versione anche centinaia di volte più lenta del join, secondi contro millisecondi.

  4. #4
    Puoi spiegarmi la query , a me sembra funzionale , il sito è nuovo , cosaintendi per versioni vecchie di sql ?

    dovrebbe eliminare questo codice :

    codice:
    //recupero il record della provincia seleionata
         $sql="SELECT id,provincia FROM province where provincia='$provincia'";
         echo '<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>Sql:'.$sql;
         $result=mysql_query($sql);
         $prov=mysql_fetch_assoc($result);
         //recupero l'id della provincia
         $idprov=$prov['id'];
         echo 'idprov:'.$idprov;
    
    
         //recupero tutti i comuni della provincia
         $sql2    ="SELECT id,id_provincia FROM comuni where id_provincia='$idprov'";
         $result2 = mysql_query($sql2);
         //creo un array con tutti gli id dei comuni
         $arraycomuni=array();
         //scorro i risultati e inserisco nell'array gli id dei comuni
         while($row=mysql_fetch_assoc($result2)){
             
    
    
             array_push($arraycomuni, $row['id']);
    
    
    
    
         }
    
    
         //Creo un array per inserire tutti gli user  dei comuni della provincia
         $arrayuser=array();
    
    
         //scorro i risultati e inserisco nell'array tutti gli user di quella provincia
         foreach($arraycomuni as $k => $v){
             
             $sql3    ="SELECT citta,id FROM user WHERE citta='$v'";
             $result3 = mysql_query($sql3);
             
             while($row=mysql_fetch_assoc($result3)){
                 array_push($arrayuser, $row['id']);
             }
    
    
         }
    Qui come risultato ho l'id user e l'id del comune ....ora vorrei poter trovare gli annunci di questo user conservando però l'id del comune (meglio sarebbe il nome)

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    539
    La query sostituisce la parte di codice che hai evidenziato,

    certo, con rispetto all'appunto di MySQL sulla velocità di risposta, è necessario che i campi di ricerca siano indicizzati

    in particolare devi indicizzare,
    id della provincia che si trova nella tabella comuni,
    id del comune che si trova nella tabella user
    poi se vuoi strafare puoi indicizzare anche la "provincia" con cui fai la ricerca nella tabella provincie
    in questo modo dai efficienza alle ricerche

    la query che ti ho indicato estrae "citta" e "id" dello user, come la tua originale,
    ma puoi aggiungere altre info sempre della tabella user

    la query estrae i record da "user",
    verificando che siano presenti nei risultati delle select "a monte"

    cerca solo di aggiungere al tuo db gli indici che ti ho indicato

  6. #6
    Ringraziandoti per ora il risultato finale dovrebbe essere quello di estrarre dal DB tutti gli annunci della provincia , secondo te e possibile creare una sola query in cui ho tuttii campi degli annunci e il nome del comune?

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    539
    Quote Originariamente inviata da pippuccio76 Visualizza il messaggio
    Ringraziandoti per ora il risultato finale dovrebbe essere quello di estrarre dal DB tutti gli annunci della provincia , secondo te e possibile creare una sola query in cui ho tuttii campi degli annunci e il nome del comune?
    ancora, spero di non essermi incasinato con i nomi dei campi
    codice:
    SELECT DISTINCT offerte.*, user.citta FROM offerte, user WHERE citta in ( 
    SELECT id FROM comuni WHERE id_provincia in ( 
    SELECT id FROM province WHERE provincia='$provincia' ) )
    AND offerte.iduser=user.id AND offerte.attiva=1 ORDER BY DATA ASC
    attenzione ad offerte.*, scritta in questo modo ti estrae tutte le combinazioni differenti
    estrae in ogni caso solo in presenza sia di user che di offerte (dovrebbe essere logico ma bene precisarlo)
    prova a vedere se ti "garba", fai sapere

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.