Visualizzazione dei risultati da 1 a 3 su 3

Discussione: query "complessa"

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    1,056

    query "complessa"

    Vi illustro un problema su una query per me complessa...per me intendo ...

    Ho tre tabelle

    tabella 1
    ID_T1 ANNO TITOLO

    tabella 2
    ID_T2 ID_T1 ID_T3

    tabella 3
    ID_T3 NOME


    Ora, penso siano chiare le relazioni tra le tre tabelle.

    Io devo fare una join che mi restituisca i valori presi tra le tre tabelle.

    Però...
    Nella tabella due posso avere n risultati per il campo ID_T1, mentre ho bisogno che siano raggruppati.

    In pratica io avevo fatto così:

    SELECT * FROM tabella1 LEFT JOIN tabella2 ON tabella1.T1=tabella2.T2 GROUP BY anno ORDER BY anno DESC


    In questo modo io non ho gli anni ripetuti, ma ovviamente non ho nemmeno tutti i nomi relativi a quell'id della tabella 2.

    Se tolgo il group by, mi viene ripetuto n volte l'anno...

    E poi non so come inserire la terza tabella nel join.

    Io temo di dover fare più query per ottenere il risultato che desidero.
    Avete invece altri consigli?
    Sono riuscita a spiegare almeno un pò

  2. #2
    Utente di HTML.it L'avatar di Teuzzo
    Registrato dal
    Mar 2002
    Messaggi
    969
    Non ho capito il problema degli anni ripetuti.
    Per il join sulle 3 tabelle:

    SELECT *
    FROM (tabella1 LEFT JOIN tabella2 ON tabella1.T1=tabella2.T2) LEFT JOIN tabella 3 ON tabella2.T3=tabella3.T3
    GROUP BY anno
    ORDER BY anno DESC

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    1,056
    grazie,
    la join tra le tre tabelle funziona.

    Per il resto ti faccio un esempio.
    Ammettiamo che io abbia:

    TABELLA1
    ID_T1=10
    ANNO=2002
    TITOLO=CIAO




    TABELLA2
    ID_T1=10
    ID_T2=1
    ID_T3=1

    ID_T1=10
    ID_T2=10
    ID_T3=2


    Ora io vorrei che mi prendesse entrambi i record della tabella 2 senza però ripetere i campi della tabella 1.

    Quindi deve stampare

    tabella1.ANNO tabella2.ID_T2 tabella2.IDT2 (cioè i due record)

    e non

    tabella1.ANNO tabella2.ID_T2 tabella1.ANNO tabella2.ID_T2

    Quindi penso di sbagliare non la query a questo punto ma il ciclo while...

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.