Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Aiuto query Join

  1. #1

    Aiuto query Join

    Salve,
    ho una domanda forse stupida su una query che inizialmente davo per scontata.

    Allora, ho la tabella utenti e una tabella abusi fatta diciamo cosi:

    codice:
    idutente1 idutente2 tipoabuso
    Devo semplicemente fare una query joinata con la tabella utenti per ricavare i vari dati di utente1 e utente2 (tipo il nick).

    Avevo ingenuamente provato cosi

    codice:
    SELECT * FROM utenti
    JOIN abusi ON id = idsegnalatore
    JOIN abusi ON id = idabusante
    ORDER BY idabuso DESC
    Ma chiaramente mysql non vuole che faccia 2 JOIN su una unica tabella.

    Che tipo di soluzione dovrei adottare?
    Sono sicuro che sarà una scemenza!

    Perchè uso Maxthon? | Mi piace questa chat

  2. #2
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    a - devi chiedere nel forum database
    b - mysql puo' fare anche 10 join sulla stessa tabella
    c - usi due volte la tabella abusi, devi invece impostare un alias per evitare l'ambiguita'

  3. #3
    Utente di HTML.it L'avatar di las
    Registrato dal
    Apr 2002
    Messaggi
    1,221
    Codice PHP:
    SELECT FROM utenti 
    JOIN abusi 
    as tab1 ON utenti.id tab1.idsegnalatore 
    JOIN abusi 
    as tab2 ON utenti.id tab2.idabusante ORDER BY idabuso DESC 
    credo che una cosa del genere dovrebbe funzionare
    Il calcolatore è straordinariamente veloce, accurato e stupido.
    L'uomo è incredibilmente lento, impreciso e creativo.
    L'insieme dei due costituisce una forza incalcolabile.
    (Albert Einstein)

  4. #4
    Originariamente inviato da las
    Codice PHP:
    SELECT FROM utenti 
    JOIN abusi 
    as tab1 ON utenti.id tab1.idsegnalatore 
    JOIN abusi 
    as tab2 ON utenti.id tab2.idabusante ORDER BY idabuso DESC 
    credo che una cosa del genere dovrebbe funzionare
    Ciao Las,
    il problema è che comunque così non conosco il nick dell'abusante ma solo del segnalatore.



    Da questa tabella abusi

    codice:
    idsegnalatore | idabusante | abuso
    devo tirare fuori il nick di entrambi...
    Perchè uso Maxthon? | Mi piace questa chat

  5. #5
    Diciamo che la logica è concettualmente sbagliata, ma prova così:

    codice:
    SELECT * FROM user u, abuso a WHERE u.id = a.idsegnalatore OR u.id = a.idabusante
    Così dovresti ottenere 2 record.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  6. #6
    Originariamente inviato da satifal
    Diciamo che la logica è concettualmente sbagliata, ma prova così:

    codice:
    SELECT * FROM user u, abuso a WHERE u.id = a.idsegnalatore OR u.id = a.idabusante
    Così dovresti ottenere 2 record.
    Mmm .. cosi è un pò antipatico da gestire in fase di stampa arrivando i dati su più righe anzichè su colonne.

    Possibile che non ci sia altro modo?
    Perchè uso Maxthon? | Mi piace questa chat

  7. #7
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767
    Propongo

    Codice PHP:
    SELECT abusi.*,tab1.nametab2.name FROM abusi 
    JOIN utenti 
    as tab1 ON tab1.id abusi.idsegnalatore 
    JOIN utenti 
    as tab2 ON tab2.id abusi.idabusante ORDER BY idabuso DESC 

  8. #8
    Originariamente inviato da Luke70
    Propongo

    Codice PHP:
    SELECT abusi.*,tab1.nametab2.name FROM abusi 
    JOIN utenti 
    as tab1 ON tab1.id abusi.idsegnalatore 
    JOIN utenti 
    as tab2 ON tab2.id abusi.idabusante ORDER BY idabuso DESC 
    BINGO!!!!!

    Ovviamente a tab1.name, tab2.name ho dato 2 alias diversi (lo dico per coloro che si serviranno di questo thread) ma comunque funziona a meraviglia.

    Grazie mille Luke70, alla fine non era così "stupida" come pensavo.
    Perchè uso Maxthon? | Mi piace questa chat

  9. #9
    Originariamente inviato da Luke70
    Propongo

    Codice PHP:
    SELECT abusi.*,tab1.nametab2.name FROM abusi 
    JOIN utenti 
    as tab1 ON tab1.id abusi.idsegnalatore 
    JOIN utenti 
    as tab2 ON tab2.id abusi.idabusante ORDER BY idabuso DESC 
    Sicuramente molto meglio la tua soluzione.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

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 © 2026 vBulletin Solutions, Inc. All rights reserved.