Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Query nidificate

  1. #1

    Query nidificate

    Buongiorno ho un problema con una query in mysql e mi sono bloccato da diverse ore,

    Ho bisogno dfi sapere quali autoscuole hanno credenziali e hanno numero di allievi=0

    organizzazione:

    in pratica ho una tabella con tutte le autoscuole che hanno un loro id

    tabella autoscuola (sedecliente) -> id_sedecliente

    Ho una tabella allievo con tutti gli allievi all' interno
    quindi

    tab allievo -> id_allievo

    sono legate tra loro perchè ogni autoscuola ha molti allievi, molti allievi hanno una sola autoscuola

    nella tabella allievo c è id_sedecliente che corrisponde per ogni id_sedecliente di sedecliente

    io ho bisogno di estrarre per tutte le autoscuole il numero totale degli allievi , cioè contare per ogni autoscuola quanti allievi ha,

    a questo punto ho una tabella keychain che ha id_keychain , username e password

    e una tabella utente che ha id_sedecliente e id_keychain,

    quindi per scoprire se le autoscuole sono attive (cioè hanno le credenziali) devo fare una join passando per la tabella utente per mettere in relazione id_sede con id_keychain .

    Innanzitutto aiutatemi a capire come posso ottenere che ad ogni autoscuola conto il numero di allievi corrispondente

    Spero di essere stato chiaro, ho bisogno di aiutoooo

  2. #2
    "chiaro" è una parola grossa comunque, iniziamo a contare

    codice:
    SELECT au.id_autoscuola, COUNT(al.id_allievo) 
    FROM autoscuole au INNER JOIN allievi al ON au.id_autoscuola=au.id_autoscuola
    GROUP BY id_autoscuola
    nomi tabelle e campi completamente inventati, aggiusta tu

  3. #3
    Ok perfetto,
    SELECT
    AL.id_sedeClienteNeca,
    IFNULL(COUNT(AL.id_allievo),0) as allievi,
    SOC.ragioneSociale as autoscuola,
    IFNULL(K.username,0) as username
    FROM allievo AL
    INNER JOIN sedeclienteneca SE ON AL.id_sedeClienteNeca = SE.id_sedeClienteNeca
    INNER JOIN societaclienteneca SOC ON SE.id_societaClienteNeca = SOC.id_societaClienteNeca
    INNER JOIN utente U ON SE.id_sedeClienteNeca = U.id_sedeClienteNeca
    INNER JOIN keychain K ON U.id_keychain = K.id_keychain
    GROUP BY id_sedeClienteNeca

    Così ottengo il numero di allievi per ogni autoscuola , il nome dell' autoscuola e il suo userbname, però non riesco ad ottenere invece le autoscuole che hanno la keychain(in questo caso che hanno username) ma che hanno numero allievi = 0

  4. #4
    1. il codice va messo tra i tag [ code ] [ / code ] e indentato
    2. usa LEFT JOIN quando vai a fare la JOIN con gli allievi (devi però partire dalle autoscuole, non dagli allievi)

Tag per questa discussione

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.