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

    [MySQL] join a tbl senza record

    Ciao a tutti,
    devo estrarre i seminari a cui un utente è iscritto ma che non ha frequentato;

    ho la tbl iscrizioni (join a utente e seminario), tbl seminari (join a iscrizioni e frequenze) e la tabella frequenze (ID, ore, join a utente, join a seminario); i record nella tbl frequenze vengono creati quando si inseriscono le ore di frequenza dello studente al seminario.

    così la query estrae tutti i seminari a cui l'utente è iscritto, frequentati o meno:

    codice:
    SELECT * FROM seminari
    LEFT JOIN iscrizioni ON iscrizioni.seminari_idseminari= seminari.idseminari
    LEFT JOIN frequenze ON frequenze.seminari_idseminari = seminari.idseminari
    WHERE iscrizioni. utenti_idutenti= $IDutente
    GROUP BY seminari.idseminari
    Di fatto comunque anche così è sbagliata perchè dovrei collegare la tbl frequenze anche per utente...

    cmq, ora vorrei aggiungere una cosa tipo:

    codice:
    AND frequenze.ore IS NULL
    ma così ovviamente non estrae nulla...

    any idea ?

  2. #2
    umm, provo a riformulare la domanda:

    questa estrae tutti i seminari a cui è iscritto l'utente, frequentati o meno:

    codice:
    SELECT * FROM seminari, iscrizioni
    WHERE iscrizioni.utenti_idutenti= $IDutente
    AND iscrizioni.seminari_idseminari= seminari.idseminari

    questa estrae solo i seminari frequentati dall'utente:
    codice:
    SELECT * FROM seminari, iscrizioni, frequenze
    WHERE iscrizioni.utenti_idutenti= $IDutente
    AND iscrizioni.seminari_idseminari= seminari.idseminari
    AND frequenze.utenti_idutenti = iscrizioni.utenti_idutenti
    AND frequenze.seminari_idseminari = iscrizioni.seminari_idseminari
    come posso sottrarre gli IDseminari risultanti della seconda dagli IDseminari risultanti dalla prima ed ottenere cosi solo i seminari non frequentati?

  3. #3
    ho risolto, posto la soluzione nella speranza possa aiutare altri:

    codice:
    SELECT * FROM seminari, iscrizioni
    LEFT JOIN frequenze ON frequenze.seminari_idseminari = iscrizioni.seminari_idseminari AND frequenze.utenti_idutenti = iscrizioni.utenti_idutenti
    WHERE iscrizioni.utenti_idutenti= $colutente_isc_ut_sem
    AND iscrizioni.seminari_idseminari= seminari.idseminari
    AND frequenze.idfrequenze IS NULL

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.