Pagina 1 di 5 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 45
  1. #1
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,783

    (Access) query: distinct + max dentro join

    ciao,

    ho due tabelle, A e B
    il dato in comune è IdUtente (A.IdUtente = B.IdUtente)

    con la query trovo quelli che NON sono presenti (IsNull) in B.IdUtente
    ma si presenta anche un'altra condizione:
    se l'IdUtente è presente devo leggere il valore massimo di un altro campo (CampoAnno, numerico) perché i valore id e anno potrebbe essere presente più volte, e selezionarlo se inferiore all'anno corrente

    per ora ho:
    codice:
     SQL = "SELECT * FROM tabellaA as A LEFT JOIN tabellaB as B ON A.ID_UTENTE=B.ID_UTENTE WHERE (B.ID_UTENTE Is Null OR [or che?]) "
    dove/come inserisco la seconda opzione?
    ha fatto un po' di prova ma senza riuscire

    idee o suggerimenti?

  2. #2
    fa' un esempio con dei dati

  3. #3
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,783
    siamo nel 2011

    codice:
    b.idutente	anno
    10		2008	no
    10		2010	<-- id da selezionare
    20		2009	no
    20		2010	no
    20		2011	no 
    30		2007	no 
    30		2008	<-- id da selezionare

  4. #4
    dovrebbe essere (vado a naso)

    codice:
    SELECT 
       a.idUtente, Max(a.anno)
    FROM 
       tabellaA as A LEFT JOIN tabellaB as B ON A.ID_UTENTE=B.ID_UTENTE 
    WHERE 
       B.ID_UTENTE Is Null
    GROUP BY
       a.idUtente

  5. #5
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,783
    non so.. domani provo qualcosa
    ora vado a dormire

  6. #6
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,783
    non mi sono ancora messo d'impegno (appena alzato )
    ma mi pare che non funzioni...
    vedo Max(a.anno) mentre l'anno si trova in B
    ripropongo lo schema, mancava l'indicazione tabella su anno, forse ti ha fuorviato

    siamo nel 2011

    codice:
    B.idutente	B.anno
    10		2008	no
    10		2010	<-- id da selezionare
    20		2009	no
    20		2010	no
    20		2011	no 
    30		2007	no 
    30		2008	<-- id da selezionare
    devo estrarre gli id non presenti in B.idutente (where B.IDUTENTE is null, e fin qui ci siamo) e se invece presenti devo estrerre quelli con l'anno (solo max) inferiore al corrente
    dove ficco l'estrazione di (B) max(anno) ?

    vado a fare il secondo caffè...

  7. #7
    vabbè che dormi, ma max(b.anno) invece di max(a.anno) te la puoi fare anche da solo

  8. #8
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,783
    bhè... non me la prende
    Too few parameters. Expected 2

    però ho scritto:
    codice:
    SELECT tabellaA.ID_UTENTE , Max(TABELLAB.ANNO) 
    FROM tabellaA as A LEFT JOIN tabellaB as B 
    ON A.ID_UTENTE=B.ID_UTENTE 
    WHERE B.ID_UTENTE Is Null 
    GROUP BY A.ID_UTENTE
    è giusto per te?

  9. #9
    non vorrei che dessero fastidio i nomi di tabella nella select, visto che li hai alias-izzati

  10. #10
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,783
    ecco.. era quello (noia)

    ma per selezionare altrii campi di tabellaA ora che scrivo?
    se uso * non me lo consente con group

    eppure devo ricavarli... li devo chiamare uno per uno?
    edit: no, non gli piace:
    You tried to execute a query that does not include the specified expression 'nomedelcampo' as part of an aggregate function.


    edit 2:
    per ora non so nemmno se va bene l'estrazione,
    intanto non la rifiuta

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.