Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080

    [Mysql] aiuto query per estrarre ultimo dato da Join

    Ho una tabella ticket:
    idticket
    dataapertura
    problema
    gruppodiassegnazione

    Inoltre ho una tabella aggiornamentiticket:
    idaggiornamento
    dataaggiornamento
    idticket
    problema
    gruppodiassegnazione

    ---

    Con una sola query ho bisogno di sapere l'elenco dei ticket e l'ultimo gruppo assegnatario. (dataaggiornamento è un campo datetime quindi posso tranquillamente ordinare per quel campo)
    Ovviamente un ticket può NON avere aggiornamento come può averne più di uno.

    Intanto ho provato così:
    codice:
    SELECT * FROM `ticket` LEFT JOIN aggiornamentiticket on ticket.idticket = aggiornamentiticket.idticket ORDER BY aggiornamentiticket.dataagg
    Questo codice in parte va bene, ma se ho più aggiornamenti io necessito di avere solo l'ultimo.

    Accetto suggerimenti sulla query più corretta.


    Grazie

  2. #2
    con mysql puoi usare LIMIT per prendere solo uno o qualche record

  3. #3
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Ho guardato un po', ma limit mi servirebbe per dare un massimo, un minimo o entrambi, ma io non conosco in partenza i dati presenti nella tabella aggiornamenti. Potrei NON averne o averne più di uno.
    Con la query che ho postato:
    - Se non ho aggiornamenti il risultato è corretto
    - Se ho aggiornamenti mi trovo una riga per aggiornamento, metre io vorrei solo l'ultimo!

    Grazie

  4. #4

  5. #5
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Penso che il limit ce l'abbia con me...
    [CODE]SELECT * FROM `ticket` LEFT JOIN ticket_agg on ticket.idticket=ticket_agg.idticket order by ticket_agg.dataagg LIMIT COUNT[CODE]
    Oviamente ho provato anche con row_count, ma ho sempre l'errore
    "undeclare variable COUNT"

    Tanto per provare ho messo un valore numerico e la sintassi funziona. (ovviamente non il risultato)

  6. #6
    se metti LIMIT 1 prendi il primo

  7. #7
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Eh no! Se metto limit1 mi esce il record che ha data null in quanto non ha nulla nella tabella aggiornamenti.
    Io invece vorrei:
    Il record senza aggiornamenti
    Il record left joinato con l'ultimo aggiornamento (visto che ne ha più di uno)
    TNX

  8. #8
    se vuoi l'ultimo ti basta invertire l'ordinamento...

  9. #9
    e se non vuoi i null basta che li escludi con una where...

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    539
    codice:
    SELECT  idticket
    , dataaggiornamento
    , ( SELECT gruppodiassegnazione FROM aggiornamentiticket t2 WHERE t1.idticket = t2.idticket AND t1.dataaggiornamento = t2.dataaggiornamento ) gruppodiassegnazione
    FROM (
      SELECT
        idticket
      , MAX(dataaggiornamento) AS dataaggiornamento
      FROM aggiornamentiticket
      GROUP BY idticket
    ) t1
    UNION ALL
    SELECT
      idticket
    , dataapertura AS dataaggiornamento
    , gruppodiassegnazione
    FROM ticket t1
    WHERE idticket NOT IN ( SELECT idticket FROM aggiornamentiticket t2 WHERE t1.idticket = t2.idticket )
    ORDER BY idticket;
    
    l' ho provata e mi sembra funzionare anche se é un po' elaborata per funzionare con sql "diversi"

Tag per questa discussione

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.