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

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107

    [Mysql] Query che prende l'ultima fattura

    Salve a tutti, mi sto perdendo in un bicchier d'acqua...
    Devo fare una query di questo tipo

    codice:
    SELECT * FROM clienti
    LEFT OUTER JOIN fatture on fattura_cliente=idcliente
    Devo però far prendere solo L'ULTIM fattura (l'ultimo idfattura, per intenderci)

    mi date una mano?
    Guybrush Threepwood

  2. #2
    usa LIMIT() e ORDER BY() DESC

  3. #3
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107
    (alternativa faccio una subquery, magari)
    Guybrush Threepwood

  4. #4
    ma spiegati meglio: vuoi l'elenco dei clienti, con a fianco l'ultima fattura emessa per ognuno di essi? Che succede se per un cliente non hai mai emesso fattura?

  5. #5
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107
    Grazie, il problema è che fa parte di una query molto piu ampia e questa è solo una delle LEFT OUTER che ci sono dentro.
    Il limit/orderby li posso usare anche sul left outer o solo sull'intera query?
    Guybrush Threepwood

  6. #6
    difficile dire le cose per un "pezzettino"... prova a postare il bestione e a spiegare bene lo scenario

  7. #7
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107
    hai ragione anche tu ^_^
    cerco di semplificare la query globale
    codice:
    SELECT              * , [campi specifici... ]
    FROM                elementi
    
    
    LEFT OUTER JOIN     regioni as R1 on ele_regione=R1.REGIONE
    LEFT OUTER JOIN     regioni as R2 on ele_provincia=R2.PROV
    LEFT OUTER JOIN     tipo on ele_tipo=idtipo 
    LEFT OUTER JOIN     ricevute on r_ele=idele
    LEFT OUTER JOIN     dipendenti on idele=d_elemento
    
    WHERE [... varie where ....]
    GROUP BY idele
    ORDER BY            ORDINAMENTO, ele_ruolo

    Cosa fa in pratica: prende tutti i clienti e li relazione con una serie di informazioni.
    La cosa che mi serve è prendere l'ultima ricevuta emessa per vedere la scadenza (e mettere un alert nel caso in cui sia scaduta)
    Guybrush Threepwood

  8. #8
    mmmm forse ti conviene fare una sub-query da usare in JOIN al posto di ricevute usando appunto LIMIT, ORDER BY e GROUP BY; provala isolata e vedi se ti restituisce il risultato che vuoi; l'importante è farsi restituire la chiave per fare la join

    per la parte "funzionale": cosa succede se hai n fatture, l'ultima che scade tra un mese, ma la penultima già scaduta e non pagata? se prendi solo l'ultima, la segnalazione salta...

  9. #9
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107
    dici di fare una cosa così?

    LEFT OUTER JOIN (select * from ricevute where... order by idr desc limit 1) as ultimaricevuta
    Guybrush Threepwood

  10. #10
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107
    E un problema che risolvo prima, non esiste (in questo caso) una ricevuta vecchia non pagata. sono ricevute annuali, quindi il problem (fortunatamente) non me lo pongo!
    Provo subito!
    Guybrush Threepwood

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.