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

    [MySQL] LEFT JOIN con tabelle intermedie

    Ciao a tutti,
    ho una scuola che tiene dei seminari, lo studente può iscriversi al seminario stesso o ad un corso che contiene il seminario. Non riesco a estrarre i dati del seminario quando lo studente non è iscritto direttamente ma tramite il corso...

    Provo a postare la query, spero si capiscano le relazioni:
    codice:
    SELECT * 
    FROM iscrizioni 
    LEFT JOIN seminari ON iscrizioni.seminari_idseminari = seminari.idseminari  
    LEFT JOIN corsi_has_seminari ON iscrizioni.corsi_idcorsi = corsi_has_seminari.corsi_idcorsi
    LEFT JOIN utenti ON iscrizioni.utenti_idutenti = utenti.idutenti 
    LEFT JOIN corsi ON iscrizioni.corsi_idcorsi = corsi.idcorsi 
    WHERE iscrizioni.seminari_idseminari = %s OR corsi_has_seminari.seminari_idseminari = %s
    MI restituisce i record corretti ma sicome gli iscritti ai corsi sono collegati ai seminari tramite la corsi_has_seminari non riesco ad estrarre i dati dalla tab_seminari mentre per gli iscritti diretti al seminario non ci sono problemi.

    Tks for yr help !

    n.d.r.
    I dati seminario per ogni iscrizione mi servono xchè devo calcolare il costo seminario (che sta nella tab_seminari) * lo sconto di ogni utente (che sta nella tab_iscrizioni); di fatto la query completa sarebbe:
    codice:
    SELECT iscrizioni.*, seminari.groupleadercost, seminari.groupleadercost - (seminari.groupleadercost*iscrizioni.scontopct/100) AS glcost, seminari.prezzo - seminari.prezzo*iscrizioni.scontopct/100 AS vgcost, (seminari.groupleadercost-seminari.groupleadercost*iscrizioni.scontopct/100) + (seminari.prezzo-seminari.prezzo*iscrizioni.scontopct/100)+ seminari.pastitotcosto AS semcost, seminari.idseminari, seminari.titolo,seminari.oretotali, utenti.idutenti, utenti.nome, utenti.cognome, corsi.titoloCorsi 
    FROM iscrizioni 
    LEFT JOIN seminari ON iscrizioni.seminari_idseminari = seminari.idseminari  
    LEFT JOIN corsi_has_seminari ON iscrizioni.corsi_idcorsi = corsi_has_seminari.corsi_idcorsi
    LEFT JOIN utenti ON iscrizioni.utenti_idutenti = utenti.idutenti 
    LEFT JOIN corsi ON iscrizioni.corsi_idcorsi = corsi.idcorsi 
    WHERE iscrizioni.seminari_idseminari = %s OR corsi_has_seminari.seminari_idseminari = %s 
    GROUP BY utenti.idutenti ORDER BY utenti.cognome

  2. #2

    Risolto

    Yeah

    "
    SELECT seminari.idseminari, utenti.cognome
    FROM iscrizioni
    LEFT JOIN utenti ON iscrizioni.utenti_idutenti = utenti.idutenti
    LEFT JOIN corsi_has_seminari ON iscrizioni.corsi_idcorsi = corsi_has_seminari.corsi_idcorsi
    LEFT JOIN seminari ON iscrizioni.seminari_idseminari = seminari.idseminari OR seminari.idseminari = corsi_has_seminari.seminari_idseminari
    WHERE iscrizioni.seminari_idseminari = %s OR corsi_has_seminari.seminari_idseminari = %s
    "

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.