Visualizzazione dei risultati da 1 a 6 su 6

Discussione: WHERE in LEFT JOIN

  1. #1

    LEFT JOIN

    Ciao a tutti

    devo fare una query che mi restituisca i record di queste 2 query (entrambe funzionanti, separatamente):

    estrae gli iscritti al seminario 3
    SELECT *
    FROM iscrizioni, Seminari
    WHERE iscrizioni.seminari_idseminari = seminari.idseminari AND iscrizioni.seminari_idseminari = 3

    estrae gli iscritti al corso che contiene il seminario 3
    SELECT *
    FROM iscrizioni, corsi_has_seminari
    WHERE iscrizioni.corsi_idcorsi = corsi_has_seminari.corsi_idcorsi AND corsi_has_seminari.seminari_idseminari = 3

    la base dovrebbe essere questa, ma restituisce troppi risultati:

    SELECT *
    FROM iscrizioni LEFT JOIN seminari ON iscrizioni.seminari_idseminari = seminari.idseminari AND iscrizioni.seminari_idseminari = 3 LEFT JOIN corsi_has_seminari ON iscrizioni.corsi_idcorsi = corsi_has_seminari.corsi_idcorsi AND corsi_has_seminari.seminari_idseminari = 3

  2. #2
    ..esiste la union... ma non serve

    Questa restituisce tutti i record (anche non rispondenti):

    SELECT iscrizioni.*
    FROM iscrizioni
    LEFT JOIN seminari ON iscrizioni.seminari_idseminari = seminari.idseminari AND iscrizioni.seminari_idseminari = 3
    LEFT JOIN corsi_has_seminari ON iscrizioni.corsi_idcorsi = corsi_has_seminari.corsi_idcorsi AND corsi_has_seminari.seminari_idseminari = 3

    e questa nessuno:

    SELECT iscrizioni.*
    FROM iscrizioni
    JOIN seminari ON iscrizioni.seminari_idseminari = seminari.idseminari AND iscrizioni.seminari_idseminari = 3
    JOIN corsi_has_seminari ON iscrizioni.corsi_idcorsi = corsi_has_seminari.corsi_idcorsi AND corsi_has_seminari.seminari_idseminari = 3

  3. #3
    Codice PHP:
    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_idcors  WHERE iscrizioni.seminari_idseminari 3 i AND corsi_has_seminari.seminari_idseminari 
    per lo meno adesso ha la giusta sintassi.


    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  4. #4
    Grazie wisher,

    il risultato è uguale a fare una select normale tipo:

    SELECT iscrizioni.*
    FROM iscrizioni
    JOIN seminari ON iscrizioni.seminari_idseminari = seminari.idseminari AND iscrizioni.seminari_idseminari = 3
    JOIN corsi_has_seminari ON iscrizioni.corsi_idcorsi = corsi_has_seminari.corsi_idcorsi AND corsi_has_seminari.seminari_idseminari = 3

    non torna nessun record

    Sto provando cosi, ma dice che la subquery torna + di un risultato e non va:

    SELECT i.idiscrizioni
    FROM iscrizioni i
    WHERE i.seminari_idseminari =
    (SELECT cas.corsi_idcorsi FROM corsi_has_seminari cas WHERE cas.seminari_idseminari = i.seminari_idseminari)

  5. #5
    rien a faire..

    questa è quella che piu si avvicina (estrae tutti i record 1 sola volta) però è come se ignorasse le clausole where, (però se le ometto mi restituisce record duplicati)

    SELECT *
    FROM iscrizioni
    LEFT JOIN seminari ON iscrizioni.seminari_idseminari = seminari.idseminari AND iscrizioni.seminari_idseminari = 3
    LEFT JOIN corsi_has_seminari ON iscrizioni.corsi_idcorsi = corsi_has_seminari.corsi_idcorsi AND corsi_has_seminari.seminari_idseminari = 3

    genera: vedi immagine

    P.S. corsi_idcorsi = 1 è l'unico corretto (corso che contiene seminario 3)
    Immagini allegate Immagini allegate

  6. #6

    Risolto

    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 WHERE iscrizioni.seminari_idseminari = 3 OR corsi_has_seminari.seminari_idseminari = 3

    Grazie Whisher

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.