Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Aiuto Query

  1. #1

    Aiuto Query

    Salve a tutti
    Avrei una domanda da porvi, come eseguire questa query

    Ho una tabella Corsi che contiene una lista di oggetti Evento
    La tabella evento ha come attributo una datainizioevento

    Vorrei ottenere tutti i corsi ordinati in base alla datainizioevento, mostrare quindi i corsi che hanno l'evento il cui inizio è più imminente.
    Avete idee?

    grazie

  2. #2
    sei nuovo -> leggi il regolamento -> indica il db


  3. #3
    Ok, mi scuso
    Sto cercando di modificare il titolo ma non me lo fa fare

  4. #4
    e scrivilo in una risposta, no?

  5. #5

    [postgresql]

    Volevo fare una cosa fatta bene e mantenere l'informazione nel titolo, corretto.

    Cmq il db è postgresql.
    Sapreste indicarmi la struttura corretta della query da utilizzare?

    Grazie

  6. #6
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    955

    Re: [postgresql]

    Originariamente inviato da bberoloz
    Volevo fare una cosa fatta bene e mantenere l'informazione nel titolo, corretto.

    Cmq il db è postgresql.
    Sapreste indicarmi la struttura corretta della query da utilizzare?

    Grazie
    codice:
    SELECT c.* FROM corsi c
    JOIN eventi e
    ON c.id = e.id_corso
    WHERE e.data_inizio = 
    	(SELECT MIN(data_inizio) 
    	FROM eventi e2
    	WHERE e2.id_corso = e.id_corso
    	AND e2.data_inizio >= DATAOGGI
    	AND e2.data_inizio <= DATALIMITE)
    ORDER BY e.data_inizio
    La query che ti ho scritto prende per ogni corso l'evento con la data minima superiore ad oggi e inferiore ad una certa data.

    Nel caso volessi tutti i corsi con l'evento più prossimo togli il filtro DATALIMITE.

    Ovviamente DATAOGGI e DATALIMITE sono due variabili che ti devi valorizzare

    Dimmi se è quello che realmente volevi

  7. #7
    Si, può essere quello che cercavo. Appena posso la provo e verifico .

    Intanto ti ringrazio

  8. #8
    Ho provato la query su pgadmin e dovrebbe andare.
    Ora devo adattarla in hql, l'ho fatta così:

    codice:
    DateTime dataAttuale = new DateTime(); //TODO sul db (mapping hb) la colonna idedizioni andrà corretta in idcorso String hql = "select c from Corso c join c.listaEdizioni e " + "where e.dataInizio = "+ "( select min(dataInizio) from EdizioneCorso e2 where e2 = e " + "and e2.dataInizio >= '"+ dataAttuale.toString("yyyy-MM-dd") + "')" + "order by e.dataInizio "; return hql;

    però in questo modo mi ritorna i Corsi duplicati, cioè se il corso ha due edizioni me lo da come risultato due volte.

    Vorrei invece ottenerlo una sola volta. Mettere la clausola dinstinct non funziona, mi ritorna errore. Cosa posso fare?

    grazie

  9. #9
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    955
    Originariamente inviato da bberoloz
    Ho provato la query su pgadmin e dovrebbe andare.
    Ora devo adattarla in hql, l'ho fatta così:

    codice:
    DateTime dataAttuale = new DateTime(); //TODO sul db (mapping hb) la colonna idedizioni andrà corretta in idcorso String hql = "select c from Corso c join c.listaEdizioni e " + "where e.dataInizio = "+ "( select min(dataInizio) from EdizioneCorso e2 where e2 = e " + "and e2.dataInizio >= '"+ dataAttuale.toString("yyyy-MM-dd") + "')" + "order by e.dataInizio "; return hql;

    però in questo modo mi ritorna i Corsi duplicati, cioè se il corso ha due edizioni me lo da come risultato due volte.

    Vorrei invece ottenerlo una sola volta. Mettere la clausola dinstinct non funziona, mi ritorna errore. Cosa posso fare?

    grazie
    Ciao,
    non avevi specificato che volevi la query in hql, è un pò diverso l'approccio in quel caso:

    Dovrebbe essere così:

    codice:
    DateTime dataAttuale = new DateTime(); 
    
    //TODO sul db (mapping hb) la colonna idedizioni andrà corretta in idcorso 
    
    
    String hql = "select e.corso from EdizioneCorso e " + "where e.dataInizio = "+ "( select min(dataInizio) from EdizioneCorso e2 where e2 = e " + "and e2.dataInizio >= '"+ dataAttuale.toString("yyyy-MM-dd") + "' and e.corso = e2.corso)" + "order by e.dataInizio "; 
    
    return hql;

  10. #10
    Ok grazie, ma per ottenere ora i corsi una sola volta? senza ripetizioni?
    (sempre ordinati in base all'evento più imminente?)

    se metto distinct mi va giustamente in conflitto con la order by

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.