Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 25
  1. #1
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591

    ottimizzare query - ovvero da query doppia a singola

    carino il titolo..
    vado al dunque. ho 2 query, che vorrei diventassero una sola..
    Codice PHP:
    mysql_select_db($DB$conn);
    $query_Recordset1 "SELECT * FROM galleria WHERE larghezza = 1 ORDER BY RAND() LIMIT 1";
    $Recordset1 mysql_query($query_Recordset1$conn) or die(mysql_error());
    $row_Recordset1 mysql_fetch_assoc($Recordset1);
    $id $row_Recordset1['id'];

    $query_Recordset2 "SELECT * FROM galleria WHERE id != '$id' ORDER BY RAND()";
    $Recordset2 mysql_query($query_Recordset2$conn) or die(mysql_error());
    $row_Recordset2 mysql_fetch_assoc($Recordset2); 
    in pratica ho bisogno che la mia UNICA query come primo risultato mi dia un record che ha larghezza = 1, e che gli altri vengano a seguire, random ovviamente..

    grazie a chiunque mi darà una mano..

  2. #2
    Ciao,

    potresti utilizzare una UNION.
    CODENCODE \ Branding \ Design \ Marketing
    www.codencode.it

  3. #3
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    eh, eh, eh.. ci avevo pensato, ma volevo proprio evitare di fare 2 query..

  4. #4
    il campo larghezza che range di valori possiede... è un campo INT che parte da 1 a salire? oppure ci può essere di tutto (TEXT/VARCHAIR)

  5. #5
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    hai ragione..
    è un INT, e solo 0 e 1..
    potrei fare "order by larghezza = 1 ", ma poi mi darebbe tutte quelle foto insieme..

  6. #6
    Codice PHP:
    $query "SELECT * FROM galleria WHERE id!='".$id."' ORDER BY RAND()";
    $result mysql_query($query) or die(mysql_error());
    while(
    $row mysql_fetch_array($result))
        {
        if(!isset(
    $larghezza_unica) AND $row['larghezza']==1)
            {
            
    $larghezza_unica $row['id']; //... ci metti i valori di $row che vuoi salvarti
            
    }
        
    // il resto che vuoi fare con i record estratti...
        


  7. #7
    Originariamente inviato da telegio
    eh, eh, eh.. ci avevo pensato, ma volevo proprio evitare di fare 2 query..
    e perchè? che hai contro la union? è cmq una query sola
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  8. #8
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    Originariamente inviato da Santino83_02
    e perchè? che hai contro la union? è cmq una query sola
    non ho niente contro..
    ma a scriverla è tosta, almeno per me..
    perchè se in teoria
    Codice PHP:
    SELECT FROM galleria WHERE larghezza 1 ORDER BY RAND() LIMIT 1
    UNION
    SELECT 
    FROM galleria WHERE id != '$id' ORDER BY RAND() 
    come valorizzo id che nell'altro caso è una variabile da un altro recordset?
    e poi se entrambe le query, anche se è una, andassero bene, i risultati sono RANDOM, quindi il primo record non è detto che sarebbe uno con larghezza = 1


    @oly: non ho capito.. la query che hai scritto restituisce tutti i risultati tranne uno: quello che sta nell'altra query.. per avere quello devo fare un'altra query?


    ma con una subquery si potrebbe fare?

  9. #9
    potresti barbaramente fare:
    codice:
    SELECT * FROM galleria WHERE larghezza = 1 ORDER BY RAND() LIMIT 1
    UNION
    SELECT * FROM galleria WHERE id NOT IN (
         SELECT id FROM galleria WHERE larghezza = 1
    )
    ORDER BY RAND()
    Administrator of NAMDesign.Net

  10. #10
    Non penso ci sia modo (se non quello di fare due query, o consequenzialmente o una subquery o una union).
    Ti conviene usare il php per estrarre una riga con larghezza 1 e stamparla prima di tutti (se è quello cio' che vuoi fare).

    Intendo tu vuoi fare questo per un motivo. Quindi il problema non è la query ma l'operazione che vuoi fare a cui hai dato come soluzione quella query. Valuta la possibilità che sia la tua soluzione a non essere ottimale =) ergo cerca un altro approccio al problema originale.

    In pratica cosa vuoi fare?

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.