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

    filtraggio dati su un left join in myslq

    Scusate, non sono tanto esperto di database ma non riesco a fare una cosa che penso sia stupidissima, ho semplificato la query per farvi vedere l'errore, ho una lista di aziende e voglio CONTARE le sedi che sono presenti in un'altro database:
    (ho semplificato prendendo solo: aziende.azienda_id)

    SELECT
    aziende.azienda_id,
    COUNT(aziende_sedi.sede_id) AS totale_sedi
    FROM
    aziende
    LEFT OUTER JOIN aziende_sedi ON (aziende_sedi.sede_azienda_id = aziende.azienda_id)
    GROUP BY
    aziende.azienda_id

    fino a qui tutto ok! mi da tutte le aziende con il quantitativo delle sedi, e li dove non ci sono sedi stampa come valore: 0 perchè giustamente non vi sono sedi associate all'azienda, ma se ora voglio filtrare una determinata classe di aziende? es:

    SELECT
    aziende.azienda_id,
    COUNT(aziende_sedi.sede_id) AS totl
    FROM
    aziende
    LEFT OUTER JOIN aziende_sedi ON (aziende_sedi.sede_azienda_id = aziende.azienda_id)
    WHERE
    aziende_sedi.sede_tipologia = 1
    GROUP BY
    aziende.azienda_id

    come ma non mi restituisce neanche un'azienda? (naturalmente neanche errori nell'sql) per caso in mysql il raggruppamento non prevede filtraggi con la where applicata a una tabella associata con lo join?

  2. #2

    Re: filtraggio dati su un left join in myslq

    Originariamente inviato da alexmizzo

    prova così..

    WHERE
    aziende_sedi.sede_tipologia = '1'
    GROUP BY
    aziende.azienda_id
    ciao stefano

  3. #3
    niente neanche in quel modo, comunque smanettando ho rimediato in questo modo:


    SELECT
    aziende.azienda_id,
    COUNT(aziende_sedi.sede_id) AS totl
    FROM
    aziende
    LEFT OUTER JOIN aziende_sedi ON (aziende_sedi.sede_azienda_id = aziende.azienda_id AND aziende_sedi.sede_tipologia = 1)
    GROUP BY
    aziende.azienda_id

    però la domanda rimane, mi sembra così strano che non funzioni

  4. #4
    Forse dipende dal fatto che

    aziende_sedi.sede_tipologia

    in pratica non viene valutato nel primo blocco della query e quindi non è mai vero ...
    prova a fare una cosa del genere:

    SELECT
    aziende.azienda_id,
    COUNT(aziende_sedi.sede_id) AS totl,
    aziende_sedi.sede_tipologia

    FROM aziende
    LEFT OUTER JOIN aziende_sedi ON (aziende_sedi.sede_azienda_id = aziende.azienda_id)

    WHERE
    aziende_sedi.sede_tipologia = 1

    GROUP BY
    aziende.azienda_id

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.