FIREBIRD Query di estrazione dati da due tables con campo comune

di il
2 risposte

FIREBIRD Query di estrazione dati da due tables con campo comune

Ho una mia query in Firebird che non funziona e chiedo aiuto per capire dove sbaglio.
Il database si chiama BIBLIOTECA.FDB e mi serve per gestire la biblioteca civica della mia città.

Devo periodicamente esportare da BIBLIOTECA.FDB dei campi da due tabelle PRESTITI e TESSERATI con campo comune N_TESSERA, per creare un elenco dei prestiti in mora (che vedo dall'assenza di una data nel campo restituzione del libro preso a prestito).

Lo scopo è generare un elenco di persone cui poter telefonare per ricordar loro il ritardo e sollecitare la restituzione del libro.

Quindi devo esportare dalla tabella PRESTITI, con la guida del campo comune N_TESSERA (che è dello stesso tipo numerico in tutte e due le tabelle) alcuni campi (il nome, cognome, data_prestito, data_scadenza, titolo del libro),

Mentre dalla tabella TESSERATI devo concatenare (sempre con con la guida del campo comune N_tessera ), sulla stessa riga dei dati del prestito, anche il nome del garante, il numero_telefono, il numero_cellulare presenti solo su questa tabella.


La mia query è la seguente (ma funziona solo parzialmente, e di seguito cosa non va):

SELECT
prestiti.nome, prestiti.cognome, prestiti.data_prestito, prestiti.data_scadenza, prestiti.titolo,
 
tesserati.garante, tesserati.n_telefono, tesserati.n_cellulare
FROM 
prestiti,tesserati
WHERE
prestiti.n_tessera = tesserati.n_tessera
AND
prestiti.data_consegna = ' ' OR prestiti.data_consegna = 'NUL'
Questa query pur esportando correttamente tutti il centinaio di prestiti ancora attivi ed in mora (cioè quelli che hanno una data_consegna ' ' oppure 'NUL'), non concatena i dati della persona giusta, cioè non funziona la condizione WHERE
prestiti.n_tessera = tesserati.n_tessera

Ringrazio fin da ora chiunque abbia qualche suggerimento da segnalarmi.
Grazie saluti
Giulio

2 Risposte

  • Re: FIREBIRD Query di estrazione dati da due tables con campo comune

    - Il campo data.consegna che campo è?
    - Quali valori può contenere?
    Te lo chiedo perché da quello che scrivi il campo è di tipo TESTO, invece dovrebbe essere di tipo DATA.
    Spero di sbagliarmi...

    Comunque, io preferisco usare i JOIN espliciti:
    
    SELECT
        .........
    FROM 
        prestiti 
    INNER JOIN 
        tesserati ON prestiti.n_tessera = tesserati.n_tessera
    WHERE
        .........
    
  • Re: FIREBIRD Query di estrazione dati da due tables con campo comune

    Grazie Gibra!! Il tuo suggerimento funziona a meraviglia e in un minuto ho ottenuto quel che cercavo.

    - Si Il campo data.consegna è un campo carattere Char(10) e contiene la data scritta all'americana aaammgg senza separatori.
    - Io sono un programmatore "finito" con la fine del DOS e l'arrivo dei programmi ad oggetto, e sono della generazione che ha iniziato a programmare con l'APS esteso sul General Electric E115 del 1968 proseguendo in area PC con l'assembler, il basic, l'autolisp; e in modo molto più esteso, anche a livello di controllo produzione industriale di laminatoi per la fabbricazione di tubi d'acciaio col DB4, e stop
    Grazie ancora.
    Ciao - GiulioT
Devi accedere o registrarti per scrivere nel forum
2 risposte