Visualizzazione dei risultati da 1 a 6 su 6

Discussione: query con group by

  1. #1
    Utente di HTML.it L'avatar di Renyp
    Registrato dal
    Nov 2004
    Messaggi
    304

    query con group by

    ciao a tutti!
    devo costruire una query che raccolga il nome delle agenzie e i rispettivi loghi - se ci sono - presenti nel mio db. I risultati devono essere raggruppati per nome dell'agenzia, in ordine alfabetico.
    Al momento ho utilizzato questa query, che lavora su tre tabelle (Inserzionisti, Loghi e AnnunciPrivati):

    codice:
    SELECT Inserzionisti.agenzia, AnnunciPrivati.id_utente, Loghi.logo FROM 
    (Inserzionisti INNER JOIN AnnunciPrivati ON Inserzionisti.ID = AnnunciPrivati.id_utente) 
    INNER JOIN Loghi ON AnnunciPrivati.ID_annuncio = Loghi.id_annuncio 
    GROUP BY Inserzionisti.agenzia, AnnunciPrivati.id_utente, Loghi.logo;
    Il risultato di questa query sono solo tre agenzie, quelle che hanno un logo nella tabella Loghi. Quelle che non ce l'hanno non vengono considerate, mentre io vorrei poterle inserire anche senza logo.

    Intuisco che il mio db sia progettato male, vorrei capire cosa modificare! Vi allego l'immagine delle tabelle Loghi e Inserzionisti.

    Come vedete, nella tabella LOGHI c'è il campo id_annuncio, inserito precedentemente per far corrispondere ad un annuncio un eventuale logo dell'azienda.

    Mi rendo conto che spiegare un db non è semplice,specie quando la materia è ostica per chi ne parla

  2. #2
    Utente di HTML.it L'avatar di Renyp
    Registrato dal
    Nov 2004
    Messaggi
    304
    qui l'immagine delle due tabelle..
    Immagini allegate Immagini allegate

  3. #3
    cambia

    inner join Loghi

    con LEFT JOIN Loghi

    per il resto se un'agenzia ha più loghi diversi verranno visualizzati tutti.

    non so se ho capito quel che chiedi..
    xxx

  4. #4
    Utente di HTML.it L'avatar di Renyp
    Registrato dal
    Nov 2004
    Messaggi
    304
    mi sembra funzioni perfettamente!! non so come ringraziarti!!

    Mi spieghi, per mia futura memoria, che differenza c'è fra Inner join e left join? non mastico molto sql..cerco di arrangiarmi come posso!

  5. #5
    contento di esser stato d'aiuto
    INNER JOIN tra due tabelle prende esattamente le occorrenze corrispondenti nelle due tabelle sulla base di quanto specificato nella clausola ON.
    LEFT JOIN invece prende come base la prima tabella, e restituisce per la seconda tabella le occorrenze corrispondenti sulla base di quanto specificato nella ON. se ci sono dati nella prima tabella ma non nella seconda, per i campi corrispondenti nella seconda tabella verranno restituiti dei NULL.
    spero di non averla incartata, è più semplice a farsi che non a dirsi

    xxx

  6. #6
    Utente di HTML.it L'avatar di Renyp
    Registrato dal
    Nov 2004
    Messaggi
    304
    no, sei stato molto prezioso! ho imparato una cosa nuova..
    grazie e alla prossima!!

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.