Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107

    [MySql] Help Query con conteggio e raggruppamento

    Stamane il cervello proprio non mi gira...

    Ho 2 tabelle:

    [AZIENDA]
    ID
    RAGIONE


    [PERSONE]
    ID_P
    NOME
    IDA --> id azienda

    Relazione, ovviamente, 1-N

    Devo fare una query per individuare (e visualizzare) tutte le aziende con più di 5 dipendenti... come fò?

    Con l'having count(nome)>5 non mi funzia correttmente...
    Guybrush Threepwood

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Che query fai e in cosa consiste il malfunzionamento?

  3. #3
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107
    Io pensavo a qualcosa tipo questo

    codice:
    select * from AZIENDA left outer join PERSONE on IDA=ID
    having count(NOME)>5
    Però mi torna 1 solo record (e senza particolari motivi)...
    Guybrush Threepwood

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    prova così
    codice:
    select azienda.*,count(persone.ida) as quanti from azienda
    inner join persone
    on azienda.id = persone.ida
    group by persone.ida
    having quanti > 5

  5. #5
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107
    ti ringrazio, ma questo tipo di output lo raggiungevo con una group by...

    Esempio pratico : Facendo una semplice LEFT OUTER JOIN fra AZIENDA e PERSONE, mi stampa (magari in ordine di azienda) tutte le aziende (ripetute) e le relative persone.

    A me serve stampare la stessa identica cosa (visualizzando cioè anche tutte le persone) ma solamente per quelle che hanno + di 5 persone.

    Con la query che mi hai gentilmente fatto,stampa l'azienda e 1 sola persona
    Guybrush Threepwood

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    codice:
    select azienda.*,count(persone.ida) as quanti,group_concat(persone.nome separator ',') as dipendenti 
    from azienda
    inner join persone
    on azienda.id = persone.ida
    group by persone.ida
    having quanti > 5

  7. #7
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107
    Purtroppo online ho mysql 4.0.24... niente group_concat
    Guybrush Threepwood

  8. #8
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    le subquery sono ammesse?
    codice:
    SELECT * FROM Azienda INNER JOIN Persone ON ida=id WHERE id IN (SELECT id FROM Azienda INNER JOIN Persone ON ida=id GROUP BY id HAVING COUNT(id)>5)

  9. #9
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107
    Purtroppo no... sicuramente era la via + facile

    Sto cercando qualcuno che mi dia una mano a fare un aggiornamento sicuro di mysql su linux... io non ci metto mano
    Guybrush Threepwood

  10. #10
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    prova con una tabella temporanea.

    codice:
    create temporary table appoggio(
    select ida from persone
    group by ida
    having count(ida) > 5
    )
    
    
    select * from persone
    inner join appoggio
    on persone.ida = appoggio.ida
    order by appoggio.ida

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.