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

    [MySQL] Utilizzare il risultato di una query in una seconda query

    Ciao... Scusate i ltitolo ma nbon so come fare... E' da un pò che mi sono allontanato da mysql... E non ricordo bene alcune cose... Il problema è:

    Gestisco utenti e gruppi in 2 distinte tabelle. Se voglio recuperare il nomer del gruppo in una sola query, sapendo solo l'id dell'utente come devo fare? Volevo fare tutto conm una uqry, si può fare?

    Ex di tabelle:
    utenti -> userid, username, pwd, GROUPID

    groups -> groupid, GROUPNAME

    devo prendere GROUPNAME, e so solo l'userid... In 2 query so come fare, ma in una sola?
    PaTeR
    From Ban to Life

  2. #2
    SELECT g.groupname
    FROM utenti AS u
    JOIN groups AS g ON g.groupid = u.groupid
    WHERE userid = $id



  3. #3
    Originariamente inviato da }gu|do[z]{®©
    SELECT g.groupname
    FROM utenti AS u
    JOIN groups AS g ON g.groupid = u.groupid
    WHERE userid = $id


    Ok, ora spiega XD
    PaTeR
    From Ban to Life

  4. #4
    Originariamente inviato da PaTeR non PeTeR
    Ok, ora spiega XD
    JOIN unisce due tabelle in base alla condizione specificata in ON...

    per cui se prima avevi due tabelle separate, adesso concettualemente ne hai una in cui le righe dell'una e quelle dell'altra si uniscono solo se g.groupid è uguale a u.groupid (g e u sono solo alias definiti per non riscrivere l'intero nome della tabella ogni volta)...

    se provi questa:

    SELECT g.groupname
    FROM utenti AS u
    JOIN groups AS g ON g.groupid = u.groupid

    su phpmyadmin te ne renderai conto.. vedrai una macrotabella con i cmapi di tutte e due.

    Se non metti la clausola ON <condizione> ottiei un prodotto cartesiano, cioè tutte le tuiple (righe) della pima tabella per uttte quelle della seconda (quindi un po' senza senso perchè vedrai tutti gli utenti in relazione con tutti i gruppi.. ma fallo in phpmyadmin se vuoi avere un'idea di come funziona la cosa)

    il where funge normalmente, selezionando una sola riga della tabella (o comunque un sottoinsieme proprio o improprio)


  5. #5
    MMM... e quindi se io dall'aray risultate dalla query cerco la chiave 'g' lui mi dà il nome della tabella?

    Cioè... Se io faccio una query con una select che ricerca un valore in più tabelle, posso sapere in che tabella era il record?
    PaTeR
    From Ban to Life

  6. #6
    Originariamente inviato da PaTeR non PeTeR
    MMM... e quindi se io dall'aray risultate dalla query cerco la chiave 'g' lui mi dà il nome della tabella?
    no, il risultato è normalissimo, come smepre.. basta fare un print_r() di quello che restituisc emysql_fetc_assoc per vedere cosa ti restituisce...

    Cioè... Se io faccio una query con una select che ricerca un valore in più tabelle, posso sapere in che tabella era il record?
    in genere non ci sono più tabelle uguali con diversi record, ma più tabelle diverse, con diversi attributi eventualemnte in relazione tra lroo.. quindi on capisco la tua domanda...

    forse vuoi dire che se unisci tabelle che hanno nomi dei campi uguali non sai come distinguerli?
    Puoi rinominarli al volo

    SELECT g.campo AS campo1, u.campo AS campo2
    FROM utenti AS u
    JOIN groups AS g ON g.groupid = u.groupid

    co hai campo1 e campo2 che in realtà solo lo stesso campo ma su due tabelle diverse (o sulla stessa tabella unita a se stessa (tramite una tabella di associazione).. cosa che in alcuni casi accade)


  7. #7
    SELECT COUNT(*) AS num FROM sito.recensioni AS r JOIN sito.utenti-generi AS g ON r.genid = g.genid WHERE g.userid = 1

    Mi dà errore...

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-generi AS g ON r.genid = g.genid WHERE g.userid = 1' at line 1

    Come mai?
    PaTeR
    From Ban to Life

  8. #8
    difficile dirlo...
    prova `sito.utenti-generi`, magari il trattino da fastidio (occhio che ` non è ')

  9. #9
    Originariamente inviato da }gu|do[z]{®©
    difficile dirlo...
    prova `sito.utenti-generi`, magari il trattino da fastidio (occhio che ` non è ')
    MMM... avevo cercato nel sito di mysql per i nomi 'legali' e quelli per le tabelle potevano contenere il trattino... ho provato comunque ma niente... Visto che tu di sintassi te ne intendi, vedi qualche errore?

    E' per forza la sintassi, anche se mi sembra giusta, dato che nelle uguaglianze che hanno come secondo membro un numero non mi sembra che ci vogliano le virgolette
    PaTeR
    From Ban to Life

  10. #10
    non so che dirti.. questo te lo fa il tuo script php o phpmyadmin? in caso provalo in phpmyadmin.. comunque conosco la semantica, ma sulla sintassi mi ci blocco anche io a volte.. quando da questi errori diventa una caccia all'errore..

    prova la query a pezzi.. prova prima la select semplice.. poi il join senza ON, poi con ON e infine where... vedi a che passaggio ti da errore e saprai megloi dove cercare

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.