Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    Ottimizzare query per "N" Key primarie

    Ho una tabella con vari campi tra cui il campo id che rappresenta la chiave primaria.

    In un vettore $vet ho le chiavi primarie dei record che devo estrarre dalla tabella. Il numero dei record da estrarre e' variabile.
    Es faccio queste assegnazioni

    $vet[]=2;
    $vet[]=6666;
    $vet[]=55;
    $vet[]=77;

    Ora vorrei estrarre quei record con una unica query cioe' una cosa del tipo

    $dati = mysql_query("SELECT * FROM tabella WHERE id='$vet'");

    ma ovviamente l'interprete mi da errore perche' $vet e' appunto un vettore. E' solo un problema di sintassi?
    Come potrei fare per evitare di fare piu' query per ogni elemento di $vet[]?
    WiWa le dottoresse di 40 ani.
    "Il potere delle donne è solo dovuto all'idiozia di molti uomini ... se non sbavassero come cani alla prima che gliela fa intravedere, le cose andrebbero diversamente."
    (alexmaz © - rivisitato by xxxfiles)

  2. #2
    codice:
    SELECT * FROM tabella WHERE id='$vet[0]' OR id='$vet[1]' OR id='$vet[2]'
    e così via

    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  3. #3
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003
    se poi vuoi automatizzare la selezione puoi fare:
    Codice PHP:
    <?
    for ($i=0;$i<=(count($vet)-1);$i++) {
      
    $where .=  (empty($where)) ? "id=$vet[$i]" OR id=$vet[$i]";
    }
    mysql_query("SELECT * FROM tabella WHERE $where");

  4. #4
    Ok pero' non c'e' una sintassi piu' compatta?

    Il numero degli elementi di $vet e' variabile e puo' variare tra 50 e 100, quindi dovrei fare un ciclo che mi costruisca la serie di OR da inserire nella query.

    Accetto altri suggerimenti :gren:
    WiWa le dottoresse di 40 ani.
    "Il potere delle donne è solo dovuto all'idiozia di molti uomini ... se non sbavassero come cani alla prima che gliela fa intravedere, le cose andrebbero diversamente."
    (alexmaz © - rivisitato by xxxfiles)

  5. #5
    Beh si VaLvOnAuTa (mamma mia che nick) stavamo scrivendo in contemporanea e non avevo letto il tuo post :adhone:
    WiWa le dottoresse di 40 ani.
    "Il potere delle donne è solo dovuto all'idiozia di molti uomini ... se non sbavassero come cani alla prima che gliela fa intravedere, le cose andrebbero diversamente."
    (alexmaz © - rivisitato by xxxfiles)

  6. #6
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003
    Originariamente inviato da xxxfiles
    Beh si VaLvOnAuTa (mamma mia che nick)
    Bello è?




    :gren:

  7. #7
    Utente di HTML.it L'avatar di Teuzzo
    Registrato dal
    Mar 2002
    Messaggi
    969
    $in="(";
    foreach($vet as $t) $in.="$t,";
    $in[strlen($in)-1]=")";

    SELECT * FROM tabella WHERE id IN $in;

  8. #8
    Gia' il nick e' tutto un sali-scendi :tongue:.

    Cmq mi sa che faccio come avete suggerito, senza sbattermi ulteriormente.

    Grazie ad entrambi .
    WiWa le dottoresse di 40 ani.
    "Il potere delle donne è solo dovuto all'idiozia di molti uomini ... se non sbavassero come cani alla prima che gliela fa intravedere, le cose andrebbero diversamente."
    (alexmaz © - rivisitato by xxxfiles)

  9. #9
    Comunque è meglio la soluzione con IN .... rispetto al WHERE .. AND .. AND, è più performante

  10. #10
    Originariamente inviato da PatoGK
    Comunque è meglio la soluzione con IN .... rispetto al WHERE .. AND .. AND, è più performante
    perfettamente d'accordo!!anche se le soluzioni migliori non mi vengono mai in mente

    ceuzzz
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

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.