Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    query una dentro l'altra...

    ragazzi ho due tabelle, in una sono memorizzati tutti i dati relativi al mercatino (ID dell'autore dell'annuncio, cosa vende e prezzo) mentre nell'atra tabella sono indicati tutti i dati relativi agli utenti registrati (ID, nickname, mail, ecc...).

    quando faccio la query

    $query = "SELECT autore, annuncio, prezzo FROM mercatino";
    $risultato = mysql_query($query);
    if($risultato) {
    while($array = mysql_fetch_array($risultato)){ $sos = $sos . "$array['autore'] - $array['annuncio'] - $array['prezzo']"; }
    }
    }


    nella variabile $array[autore] mi ci si mette l'ID dell'autore, tramite questo ID dovrei risalire al suo nickname in modo che al posto dell'ID mi scriva il nickname. come devo fare? sono due query l'una dentro l'altra?

    ditemi voi... grazie...

  2. #2
    fai una selezione con INNER JOIN
    codice:
    SELECT u.autore, m.annuncio, m.prezzo 
    FROM mercatino as m
    INNER JOIN utenti as u
    ON m.autore = u.id

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

  3. #3
    grazie, provo subito!

  4. #4
    senti, se i campi di m sono tanti, posso inserire m.* al posto di elencarli tutti?

  5. #5
    Originariamente inviato da wiko85
    senti, se i campi di m sono tanti, posso inserire m.* al posto di elencarli tutti?
    Certamente. Devi stare solo attento ai nomi dei campi. Se il nome esiste in entrambe le tabelle l'ultima sovrascrivera' la precedente.

    Vale l'ordine in cui elenchi in SELECT....



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

  6. #6
    senti, mi è capitato un caso in cui devo mettere ancora un'altra query dentro le due...

    mettimo ad esempio che nella tabella users ci sia anche un valore numerico che rappresenta il permesso dell'utente all'interno del sistema...

    quindi mettiamo che nella tabella users ci sia un campo chiamato 'livello' che conterrà un numero (1, 2 o 3) e mettiamo che esiste una tabella di nome 'livelli' formata dai campi ID e nome livello dove ID è il numero 'livello' della tabella users...

    io devo visualizzare il nome del livello dell'utente ed il nickname dell'utente partendo dal codice 'autore' contenuto nella tabella 'mercatino'...

    è un po un casino ma più chiaro di così non sapevo come fare...

    spero saprai aiutarmi, grazie anticipatamente!

  7. #7
    codice:
    SELECT u.*, m.annuncio, m.prezzo, l.livello 
    FROM mercatino as m
    INNER JOIN users as u ON m.autore = u.id
    INNER JOIN livelli as l ON l.id = u.livello
    WHERE l.nome_livello = 3

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

  8. #8
    grazie!

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.