Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027

    [query] devo farne una o due secondo voi?

    buongiorno, scusate ma non sapevo come intitolare la discussione, comunque passo subito al dunque:

    avrei la necessità di fare una query ma non so se farne una o due in quanto dovrei selezionare i dati della tabella utente più le sue relative immagini che si trovano in un'altra tabella di nome immagini.

    secondo voi per fare ciò come dovrei muovermi? dovrei fare una join o 2 query differenti?

    io pensavo che potrei fare così:

    codice:
    SELECT * FROM utente U INNER JOIN immagini I ON I.idutente = U.id
    sarebbe una soluzione logica e giusta secondo voi per fare ciò che mi servirebbe?

  2. #2
    Quote Originariamente inviata da passasooz Visualizza il messaggio
    buongiorno, scusate ma non sapevo come intitolare la discussione, comunque passo subito al dunque:

    avrei la necessità di fare una query ma non so se farne una o due in quanto dovrei selezionare i dati della tabella utente più le sue relative immagini che si trovano in un'altra tabella di nome immagini.

    secondo voi per fare ciò come dovrei muovermi? dovrei fare una join o 2 query differenti?

    io pensavo che potrei fare così:

    codice:
    SELECT * FROM utente U INNER JOIN immagini I ON I.idutente = U.id
    sarebbe una soluzione logica e giusta secondo voi per fare ciò che mi servirebbe?
    mettere in join le tabelle e' la soluzione corretta, per una questione di efficienza non mettere select * ma, elenca esplicitamente i campi della tabella Utente e della tabella Immagini che ti interessano
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027
    si però mi sorge un dubbio come devo dichiararli i campi da selezionare? ovvero devo fare una cosa del tipo

    codice:
    SELECT U.nome,U.cognome,I.nomeimmagine,I.voto FROM utente U INNER JOIN immagini I ON I.idutente = U.id
    ?

  4. #4
    Quote Originariamente inviata da passasooz Visualizza il messaggio
    si però mi sorge un dubbio come devo dichiararli i campi da selezionare? ovvero devo fare una cosa del tipo

    codice:
    SELECT U.nome,U.cognome,I.nomeimmagine,I.voto FROM utente U INNER JOIN immagini I ON I.idutente = U.id
    ?
    esattamente
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027
    ah ok perfetto grazie mille

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027
    emh... ho un problema, ora non so se devo postarlo qui o sulla sezione PHP comunque è una conseguenza della SELECT che ho appena fatto

    codice:
      $sql = $db->prepare("SELECT U.nome,U.cognome,U.sesso,U.email FROM utente U INNER JOIN immagini I ON I.idutente = U.id WHERE U.tipo = :tipo AND :campo_cerca IN (U.nazione,U.citta,U.provincia)");
      $sql->execute(array(':tipo'=>"tatuatore",':campo_cerca'=>$_POST['campo_cerca']));
      $res_search=$sql->fetchAll();
      if($sql->rowCount() > 0){
        foreach($res_search as $row){
          echo "{$row['nome']}";
          echo "<br>";
          echo "{$row['cognome']}";
          echo "<br>";
          echo "{$row['sesso']}";
          echo "<br>";
          echo "{$row['email']}";
          echo "<br>";
        }
      }
      else{
        echo "non ci sono risultati";
      }
    }

    allora questo è il codice che ci interessa guardare soprattutto la parte della select e il foreach

    perchè il foreach? perchè il risultato che mi stampa in conseguenza alla select è questo (premetto che nel db ci sono 2 utenti con TIPO tatuatore)

    francesco
    passanante
    m
    francescopassanante@gmail.com
    claudia
    passanante
    f
    clapassanante@hotmail.it
    claudia
    passanante
    f
    clapassanante@hotmail.it
    francesco
    passanante
    m
    francescopassanante@gmail.com
    francesco
    passanante
    m
    francescopassanante@gmail.com
    claudia
    passanante
    f
    clapassanante@hotmail.it
    claudia
    passanante
    f
    clapassanante@hotmail.it
    come mai mi ripete gli utenti e i loro dati tot volte?

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027
    ah forse ho capito perchè si comporta così, allora l'utente FRANCESCO PASSANANTE ha caricato 3 immagini nella tabella immagini mentre l'utente CLAUDIA PASSANANTE ne ha caricate 4, infatti se si nota il nome e i dati relativi ai due utenti vengono ripetuti tot volte quante sono le relative immagini per ciascuno.

    però non capisco dove sta l'errore nel codice ovvero, io vorrei fare che per ogni utente mi elenchi le sue immagini, come potrei fare?

    p.s. mi conviene postare tutto nella sezione php?

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027
    ho risolto il codice che ho utilizzato è questo, non so se ho allungato la procedura o meno qundi fatemi sapere...

    codice:
      $sql = $db->prepare("SELECT id,nome,cognome,sesso,email FROM utente WHERE tipo = :tipo AND :campo_cerca IN (nazione,citta,provincia)");
      $sql->execute(array(':tipo'=>"tatuatore",':campo_cerca'=>$_POST['campo_cerca']));
      $res_search=$sql->fetchAll();
      if($sql->rowCount() > 0){
        foreach($res_search as $row){
          $id=$row['id'];
          $img = $db->prepare("SELECT I.titolo,I.genere,I.nomeimmagine FROM immagini I INNER JOIN utente U ON U.id = I.idutente WHERE I.idutente = :id");
          $img->execute(array(':id'=>$id));
          $res_img=$img->fetchAll();
          $num_img=$img->rowCount();
          echo "{$row['nome']}";
          echo "<br>";
          echo "{$row['cognome']}";
          echo "<br>";
          echo "{$row['sesso']}";
          echo "<br>";
          echo "{$row['email']}";
          echo "<br>";
          echo "numero immagini caricate: {$num_img}";
          echo "<br>";
          foreach($res_img as $immagini){
            echo "{$immagini['titolo']}";
            echo "<br>";
            echo "{$immagini['genere']}";
            echo "<br>";
            echo "{$immagini['nomeimmagine']}";
            echo "<br>";
          }
          echo "<br>";
        }
      }
      else{
        echo "non ci sono risultati";
      }
    }
    ?>

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.