Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    31

    [SQLite] LEFT JOIN BETWEEN data

    Ciao, con questa query ottengo correttamente i dati dalle 2 tabelle.

    Ora però, a causa del BETWEEN, se nella "Tabella2" non ci sono dati, non vengono selezionati neanche quelli della "Tabella1".
    Come posso risolvere? Grazie mille



    codice:
    String tabella_conti = "SELECT B._id, " +
      		"B.budget, " +
      		"B.data_inizio, " +
      		"B.data_fine, " +
      		"B.categoria, " +
      		"B.nome_sottocategoria, " +
      		"B.conto, " +
      		"SUM(C.uscita), " +
      		"C.nome_sottocategoria, " +
      		"C.data " +
      		"FROM Tabella1 B LEFT JOIN Tabella2 C ON (B.nome_sottocategoria = C.nome_sottocategoria) " +
      		"WHERE prelievo_versamento = 0 AND C.data BETWEEN B.data_inizio AND B.data_fine GROUP BY C.nome_sottocategoria";

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Il BETWEEN viene fatto sulla Tabella1.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    31
    Scusami, quindi???

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Mi spiego meglio.

    Se Tabella2 è vuota LEFT JOIN fa si che C.data è uguale a null se non c'è corrispondenza tra le due tabelle e null non sarà mai BETWEEN data inizio e data fine.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    31
    Si, infatti come dicevo nel primo post se nella "Tabella2" non vi sono dati il risultato è null.

    Ma, per ottenere i dati anche se "Tabella2" è null come posso fare?

  6. #6
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    E' quello che trovavo strano nella tua domanda. Non si puo' risolvere senza cambiare lo scopo della query.
    Potresti fare come qui sotto ma ti tornerebbe tutti i record di Tabella1.

    WHERE prelievo_versamento = 0 AND (C.data BETWEEN B.data_inizio AND B.data_fine OR C.data IS NULL)
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

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.