+ Rispondi alla Discussione
Risultati da 1 a 5 di 5

problema con un join con mysql

Ultimo Messaggio di deejayp il:
  1. #1
    User L'avatar di deejayp
    Data Registrazione
    Nov 2006
    Località
    Sicilì
    Messaggi
    45

    problema con un join con mysql

    Ciao ragazzi,
    spero che mi possiate aiutare a risolvere questo mio problema...che mi fa impazzire da 3 giorni..


    Innanzitutto vi dico che questo problema riguarda 2 tabelle presente in un DB MYSQL

    - TBL_Report, composta da:
    Id
    IdNews
    IdIscritto


    - TBL_Iscritti, composta da:
    Id
    IdAdmin
    Abilitato [tipo campo INT -con valori possibili 0/1]
    Richiesta Cancellazione [tipo campo DATE]


    Adesso, il problema è questo, dovrei "prelevare" tutti gli iscritti inseriti nella TBL_ISCRITTI che non siano presenti nella TBL_REPORT che fanno parte di un determinato IDADmin, che abbiano nel campo Abilitato lo 0, che non abbiano richiesto la cancellazione (quindi che il campo sia vuoto) e che non abbiano abbinato una IDNews che ho richiesto per il controllo.


    La query che ho fatto è questa:

    Select * FROM TBL_ISCRITTI A LEFT JOIN TBL_Report B ON A.Id <> B.IdIScritto WHERE A.IdAdmin = 3 AND IsNull(A.Richiesta_Cancellazione) And A.Abilitato = 0 AND B.IdNews = 23


    Ma purtroppo non funziona...riuscite a capire il perchè ?!!?
    Mi restituisce sempre un dato errato..
    Ultima modifica di lorenzo-74; 20-06-09 alle 22:16 Motivo: maiuscole.
    DJP Webmaster :: Your Business...Our Passion !

  2. #2
    User Newbie
    Data Registrazione
    Feb 2006
    Messaggi
    8
    Ciao,
    ma ti escono risultati in più o è proprio errato il set di record risultanti?

    Prova a mettere una condizione is null sulla tabella report.
    Ultima modifica di JACK1971; 21-06-09 alle 19:11 Motivo: Maiuscola e punteggiatura

  3. #3
    User L'avatar di deejayp
    Data Registrazione
    Nov 2006
    Località
    Sicilì
    Messaggi
    45
    ciao H4MM3R,
    grazie per avermi risposto..
    In pratica il risultato è semrpe errato... o mi da 0 oppure un risultato sempre errato ...
    DJP Webmaster :: Your Business...Our Passion !

  4. #4
    Moderatore L'avatar di paocavo
    Data Registrazione
    Mar 2006
    Località
    Lecce, Italy
    Messaggi
    1,016
    Aggiungi paocavo su Facebook Aggiungi paocavo su Linkedin
    Citazione Originariamente Scritto da deejayp Visualizza Messaggio

    Innanzitutto vi dico che questo problema riguarda 2 tabelle presente in un DB MYSQL

    - TBL_Report, composta da:
    Id
    IdNews
    IdIscritto


    - TBL_Iscritti, composta da:
    Id
    IdAdmin
    Abilitato [tipo campo INT -con valori possibili 0/1]
    Richiesta Cancellazione [tipo campo DATE]


    Adesso, il problema è questo, dovrei "prelevare" tutti gli iscritti inseriti nella TBL_ISCRITTI che non siano presenti nella TBL_REPORT che fanno parte di un determinato IDADmin, che abbiano nel campo Abilitato lo 0, che non abbiano richiesto la cancellazione (quindi che il campo sia vuoto) e che non abbiano abbinato una IDNews che ho richiesto per il controllo.
    Ciao,
    non si tratta di Join ma di selezione per differenza tra insiemi, prova con questa query andando a specificare un IdAdmin di prova (al posto di [param_ID_Admin]).

    Codice:
    Select * 
            from TBL_ISCRITTI 
    where 
            TBL_ISCRITTI.id NOT IN (SELECT distinct  idiscritto from TBL_Report) 
    AND
            idAdmin = [param_ID_Admin]
    And
            abilitato=0
    And
          TBL_ISCRITTI.[Richiesta Cancellazione] is NULL
    PS: In generale ti consiglio di non usare nomi di campi o tabelle conteneti più parole separate da spazi, al limite separali con un underscore ("_").
    L'introduzione di spazi può generare errori SQL se non opportunamente formattati con apici particolari e/o parentesi.

    Saluti

  5. #5
    User L'avatar di deejayp
    Data Registrazione
    Nov 2006
    Località
    Sicilì
    Messaggi
    45
    ciao,
    innanzitutto ti ringrazio per il tuo suggerimento...ma avevo già risolto, utilizzando proprio la tua soluzione..
    qui di seguito, ti riporto ciò che ho fatto:

    Select * FROM TBL_ISCRITTI WHERE IdAdmin = 3 AND (IsNull(Richiesta_Cancellazione) Or Richiesta_Cancellazione = '//' Or Richiesta_Cancellazione = '') And Abilitato = 0 AND Id not in (SELECT IdIscritto FROM Tbl_Report WHERE IdNews = 23) ORDER BY Richiesta_Cancellazione, Cognome

    per quanto risgurda il suggerimento sul come nominare i campi e le tabelle...quello già lo faccio

    grazie cmq a tutti voi..
    DJP Webmaster :: Your Business...Our Passion !

+ Rispondi alla Discussione

^ Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
  • Il codice BB è Attivato
  • Le faccine sono Attivato
  • Il codice [IMG] è Attivato
  • Il codice [VIDEO] è Attivato
  • Il codice HTML è Disattivato
  • Trackbacks Attivato
  • Pingback Attivato
  • Refback Attivato

SEO by vBSEO 3.6.0 PL2 ©2011, Crawlability, Inc.