Visualizzazione dei risultati da 1 a 10 su 47

Visualizzazione discussione

  1. #1

    [mysql] riepilogo (COUNT) su due tabelle

    Ho due tabelle simili, una per gli insegnanti ed i loro corsi ed una per gli allievi ed i corsi a cui sono iscritti.
    I campi sono:
    id, corso, id_insegnanti
    id, corso, id_allievo

    I record delle tabelle:

    id corso id_allievo
    1 CHITARRA ELETTRICA 1
    2 CONTRABBASSO 1
    3 CHITARRA ELETTRICA 2
    4 CONTRABBASSO 2
    5 CHITARRA ELETTRICA 3
    6 CONTRABBASSO 3
    7 TROMBA 4
    8 VIOLINO 4
    9 CHITARRA CLASSICA 5
    10 TROMBA 5
    29 BATTERIA 6
    12 TROMBA 6
    27 SASSOFONO 14
    26 TROMBA 13
    25 SASSOFONO 13
    24 VIOLINO 12
    23 SASSOFONO 12
    19 SASSOFONO 10
    20 TROMBA 10
    21 SASSOFONO 11
    22 VIOLINO 11
    28 TROMBA 14
    sc_corsi_docenti
    id corso id_insegnanti
    1 CHITARRA ELETTRICA 1
    2 CONTRABBASSO 1
    3 CHITARRA CLASSICA 2
    4 TROMBA 2
    5 SASSOFONO 3
    6 VIOLINO 3
    7 TROMBA 1
    8 BATTERIA 4
    9 EDUCAZIONE MUSICALE 4

    Facendo i riepiloghi dei corsi per ciascuna tabella ottengo i giusti riepiloghi:
    I corsi assegnati allo staff
    Corsi N. ass
    BATTERIA 1
    CHITARRA CLASSICA 1
    CHITARRA ELETTRICA 1
    CONTRABBASSO 1
    EDUCAZIONE MUSICALE 1
    SASSOFONO 1
    TROMBA 2
    VIOLINO 1

    I corsi assegnati agli allievi
    Corsi N. ass
    BATTERIA 1
    CHITARRA CLASSICA 1
    CHITARRA ELETTRICA 3
    CONTRABBASSO 3
    SASSOFONO 5
    TROMBA 6
    VIOLINO 3


    Ora quel che desidero ottenere è una cosa del genere:
    corsi staff assegnati allievi assegnati
    BATTERIA 1 1
    CHITARRA CLASSICA 1 1
    CHITARRA ELETTRICA 1 3
    CONTRABBASSO 1 3
    EDUCAZIONE MUSICALE 1
    SASSOFONO 1 5
    TROMBA 2 6
    VIOLINO 1 3

    Ho provato con una UNION, con una INNER JOIN che restituiscono risultati non soddisfacienti o inesatti e con altri metodi che mi restituiscono degli errori.
    UNION
    Codice PHP:
    $Query_corsi_full "
      SELECT corso, count( id_insegnanti )  AS tot,  'ins' AS tipo
      FROM sc_corsi_docenti
      GROUP  BY corso
      UNION  
      SELECT corso, count( id_allievo )  AS tot,  'all' AS tipo
      FROM sc_corsi_allievi
      GROUP  BY corso
      ORDER  BY tipo, tot
    "

    JOIN
    Codice PHP:
    $Query_corsi_full ="
      SELECT sc_corsi_docenti.corso AS corsoA, count( sc_corsi_docenti.id_insegnanti )  AS totA,  'ins' AS tipoA, 
      sc_corsi_allievi.corso AS corsoB, count( sc_corsi_allievi.id_allievo )  AS totB,  'all' AS tipoB
      FROM sc_corsi_docenti  
      INNER  JOIN sc_corsi_allievi 
      ON sc_corsi_docenti.id = sc_corsi_allievi.id
      GROUP  BY sc_corsi_docenti.corso, sc_corsi_allievi.corso
    "

    Con la UNION ottengo risultati giusti, ma, giustamente, coi dati intabellati in modo verticale.
    Con la JOIN ottengo i dati intabellati in maniera orizzontale, ma con risultati errati:

    Ora chiedo se c'è un modo per ottenere i dati disposti come nell'esempio mostrato più sopra.
    Grazie per l'attenzione.
    Ultima modifica di micdas; 24-03-2016 a 02:21

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.