Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 23
  1. #1

    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
    Hotel a Milano::Cerca il tuo alloggio a milano;
    IBeds::Cerca il tuo alloggio in italia con il cellulare;
    Hotel a Roma::Cerca il tuo alloggio a roma;
    Hotel a Venezia::Cerca il tuo alloggio a venezia;

  2. #2
    codice:
    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
    HAVING 
       b.IdIscritto = NULL

  3. #3
    ciao optime,
    ti ringrazio per la tua soluzione...

    ma mi da questo errore:

    Tipo di errore:
    Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
    [MySQL][ODBC 3.51 Driver][mysqld-4.1.9-max]Colonna sconosciuta 'b.IdIscritto' in 'having clause'

    Hotel a Milano::Cerca il tuo alloggio a milano;
    IBeds::Cerca il tuo alloggio in italia con il cellulare;
    Hotel a Roma::Cerca il tuo alloggio a roma;
    Hotel a Venezia::Cerca il tuo alloggio a venezia;

  4. #4
    codice:
    Select 
       *, b.IdIscritto AS bazuraa
    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
    HAVING 
       bazuraa = NULL

  5. #5
    grazie optime...
    ma c'è qualche cosa che non va..

    perchè scrivendo la tua query dove mi dovrebbe conteggiare il numero dei record , per un eventuale paginazione, mi dice questo

    Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
    [MySQL][ODBC 3.51 Driver][mysqld-4.1.9-max]Il mescolare funzioni di aggregazione (MIN(),MAX(),COUNT()...) e non e` illegale se non c'e` una clausula GROUP BY


    allora ho provato a mettere la clausola GROUP BY

    Select COUNT(*), B.IdIscritto As Bazuraa 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 Group By B.IdIscritto HAVING bazuraa = NULL

    ma il numero dei record che mi indica è 0, ma in realtà non è così.
    Hotel a Milano::Cerca il tuo alloggio a milano;
    IBeds::Cerca il tuo alloggio in italia con il cellulare;
    Hotel a Roma::Cerca il tuo alloggio a roma;
    Hotel a Venezia::Cerca il tuo alloggio a venezia;

  6. #6
    non conosco così bene mysql... prova con una query nidificata

    codice:
    SELECT * FROM
    (
    Select 
       *, b.IdIscritto AS bazuraa
    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
    )
    WHERE bazuraa = NULL
    poi vedo che usi

    AND IsNull(A.Richiesta_Cancellazione)

    non è che devi usare

    AND A.Richiesta_Cancellazione = NULL

    ??

    magari funziona anche la query secca

  7. #7
    ciao optime..
    ho provato ad inserie la tua query modificata, ed a mettere AND A.Richiesta_Cancellazione = NULL

    ma il risultato è il seguente:

    Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
    [MySQL][ODBC 3.51 Driver][mysqld-4.1.9-max]Every derived table must have its own alias


    Hotel a Milano::Cerca il tuo alloggio a milano;
    IBeds::Cerca il tuo alloggio in italia con il cellulare;
    Hotel a Roma::Cerca il tuo alloggio a roma;
    Hotel a Venezia::Cerca il tuo alloggio a venezia;

  8. #8
    e fallo! metti un alias di tabella, me ne ero dimenticato

  9. #9
    scusa optime...ma mi fai un esempio...
    Hotel a Milano::Cerca il tuo alloggio a milano;
    IBeds::Cerca il tuo alloggio in italia con il cellulare;
    Hotel a Roma::Cerca il tuo alloggio a roma;
    Hotel a Venezia::Cerca il tuo alloggio a venezia;

  10. #10
    Originariamente inviato da deejayp
    scusa optime...ma mi fai un esempio...
    maro' come ti perdi facile

    select * from (select bla bla bla) AS deejayp_table bla bla

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 © 2026 vBulletin Solutions, Inc. All rights reserved.