Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 21

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Ovviamente l'orario l'ho messo nel campo data.
    Scrordo i pezzi perchè quando apro un post cerco sempre di semplificare al massimo tutto
    Adesso faccio un po' di prove!
    Grazie

  2. #2
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Dunque tra mille interruzioni la tua query non sono riuscita a farla funzionare. Però tra i vecchi appunti ho trovata questa funzionante che fa al caso mio

    codice:
    SELECT idticket, dataagg, (SELECT assegnatoruolo FROM ticket_agg t2 WHERE agg.idticket = t2.idticket AND agg.dataagg = t2.dataagg) assegnatoruolo_agg, (SELECT assegnatopers FROM ticket_agg t2 WHERE agg.idticket = t2.idticket AND agg.dataagg = t2.dataagg) assegnatopers_agg 
    FROM ( SELECT idticket, MAX(dataagg) AS dataagg 
    FROM ticket_agg GROUP BY idticket ) AS agg
    Il problema è unirlo con il left join! Ho sempre errori di sintatti

    codice:
    SELECT ticket.idticket, ticket.chiuso, ticket.assegnatopers, ticket.assegnatoruolo, ticket.numero, ticket.dataapertura, clienti.idcliente, nome, nomeimp, impianto.idimpianto, impianto, impianto.indirizzo, localita, impianto.potenza, provincia, agg.aggiornato_al, agg.assegnatoruolo_agg, agg.assegnatopers_agg 
    FROM ticket 
    INNER JOIN clienti on ticket.idcliente = clienti.idcliente 
    INNER JOIN impianto on ticket.idimpianto = impianto.idimpianto 
    INNER JOIN localita ON impianto.idlocalita = localita.idlocalita 
    LEFT JOIN SELECT idticket, dataagg, (SELECT assegnatoruolo FROM ticket_agg t2 WHERE agg.idticket = t2.idticket AND agg.dataagg = t2.dataagg) assegnatoruolo_agg, (SELECT assegnatopers FROM ticket_agg t2 WHERE agg.idticket = t2.idticket AND agg.dataagg = t2.dataagg) assegnatopers_agg FROM ( SELECT idticket, MAX(dataagg) AS dataagg FROM ticket_agg GROUP BY idticket ) AS agg
    ON ticket.idticket= agg.idticket 
    WHERE ticket.chiuso='no' and impianto.attivo='si' 
    ORDER BY dataapertura, numero, nome, localita, provincia
    ERRORE:

    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'SELECT idticket, dataagg, (SELECT assegnatoruolo FROM ticket_agg t2 WHERE agg.id' at line 6

    Ho provato a mettere anche la partentesi prima della select, ma dopo mi dice che servono gli alias per tutte le tabelle.
    Uff che fatica!

  3. #3
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Ho fatto anche questa prova di sintassi
    codice:
    SELECT ticket.idticket, ticket.chiuso, ticket.assegnatopers, ticket.assegnatoruolo, ticket.numero, ticket.dataapertura, clienti.idcliente, nome, nomeimp, impianto.idimpianto, impianto, impianto.indirizzo, localita, impianto.potenza, provincia, agg.aggiornato_al, agg.assegnatoruolo_agg, agg.assegnatopers_agg 
    FROM ticket 
    INNER JOIN clienti on ticket.idcliente = clienti.idcliente 
    INNER JOIN impianto on ticket.idimpianto = impianto.idimpianto 
    INNER JOIN localita ON impianto.idlocalita = localita.idlocalita 
    LEFT JOIN (SELECT idticket, dataagg, (SELECT assegnatoruolo FROM ticket_agg t2 WHERE agg.idticket = t2.idticket AND agg.dataagg = t2.dataagg) assegnatoruolo_agg, (SELECT assegnatopers FROM ticket_agg t2 WHERE agg.idticket = t2.idticket AND agg.dataagg = t2.dataagg) assegnatopers_agg 
    FROM ( SELECT idticket, MAX(dataagg) AS dataagg FROM ticket_agg GROUP BY idticket )) AS agg
    ON ticket.idticket= agg.idticket 
    WHERE ticket.chiuso='no' and impianto.attivo='si' 
    ORDER BY dataapertura, numero, nome, localita, provincia
    In questo caso ricevo l'errore "ogni tabella derivata deve avere il proprio alias"
    Cosa però che mi pare esserci.

  4. #4
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    955
    Quote Originariamente inviata da Sonikag Visualizza il messaggio
    Ho fatto anche questa prova di sintassi
    codice:
    SELECT ticket.idticket, ticket.chiuso, ticket.assegnatopers, ticket.assegnatoruolo, ticket.numero, ticket.dataapertura, clienti.idcliente, nome, nomeimp, impianto.idimpianto, impianto, impianto.indirizzo, localita, impianto.potenza, provincia, agg.aggiornato_al, agg.assegnatoruolo_agg, agg.assegnatopers_agg 
    FROM ticket 
    INNER JOIN clienti on ticket.idcliente = clienti.idcliente 
    INNER JOIN impianto on ticket.idimpianto = impianto.idimpianto 
    INNER JOIN localita ON impianto.idlocalita = localita.idlocalita 
    LEFT JOIN (SELECT idticket, dataagg, (SELECT assegnatoruolo FROM ticket_agg t2 WHERE agg.idticket = t2.idticket AND agg.dataagg = t2.dataagg) assegnatoruolo_agg, (SELECT assegnatopers FROM ticket_agg t2 WHERE agg.idticket = t2.idticket AND agg.dataagg = t2.dataagg) assegnatopers_agg 
    FROM ( SELECT idticket, MAX(dataagg) AS dataagg FROM ticket_agg GROUP BY idticket )) AS agg
    ON ticket.idticket= agg.idticket 
    WHERE ticket.chiuso='no' and impianto.attivo='si' 
    ORDER BY dataapertura, numero, nome, localita, provincia
    In questo caso ricevo l'errore "ogni tabella derivata deve avere il proprio alias"
    Cosa però che mi pare esserci.
    Per sicurezza, metti l'alias davanti a tutti i campi della lista campi nella select ed anche nella order by. Ad esempio nella lista campi c'è un campo che si chiama impianto, ma non capisco a chi appartenga (o se hai messo l'alias e non il campo associato)

  5. #5
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Grazie!
    Dici così:
    codice:
    SELECT ticket.idticket, ticket.chiuso, ticket.assegnatopers, ticket.assegnatoruolo, ticket.numero, ticket.dataapertura, clienti.idcliente, clienti.nome, impianto.nomeimp, impianto.idimpianto, impianto.impianto, impianto.indirizzo, impianto.localita, impianto.potenza, impianto.provincia, agg.aggiornato_al, agg.assegnatoruolo_agg, agg.assegnatopers_agg 
    FROM ticket 
    INNER JOIN clienti on ticket.idcliente = clienti.idcliente 
    INNER JOIN impianto on ticket.idimpianto = impianto.idimpianto 
    INNER JOIN localita ON impianto.idlocalita = localita.idlocalita 
    LEFT JOIN (SELECT idticket, dataagg, (SELECT assegnatoruolo FROM ticket_agg t2 WHERE agg.idticket = t2.idticket AND agg.dataagg = t2.dataagg) assegnatoruolo_agg, (SELECT assegnatopers FROM ticket_agg t2 WHERE agg.idticket = t2.idticket AND agg.dataagg = t2.dataagg) assegnatopers_agg 
    FROM ( SELECT idticket, MAX(dataagg) AS dataagg FROM ticket_agg GROUP BY idticket )) AS agg
    ON ticket.idticket= agg.idticket 
    WHERE ticket.chiuso='no' and impianto.attivo='si' 
    ORDER BY ticket.dataapertura, ticket.numero, clienti.nome, impianto.localita, impianto.provincia
    Coretto così ho comunque l'errore che ogni tabella ha bisogno del suo alias

  6. #6
    codice:
    SELECT   ticket.idticket,
       ticket.chiuso,
       ticket.assegnatopers,
       ticket.assegnatoruolo,
       ticket.numero,
       ticket.dataapertura,
       clienti.idcliente,
       clienti.nome,
       impianto.nomeimp,
       impianto.idimpianto,
       impianto.impianto,
       impianto.indirizzo,
       impianto.localita,
       impianto.potenza,
       impianto.provincia,
       agg.aggiornato_al,
       agg.assegnatoruolo_agg,
       agg.assegnatopers_agg 
    FROM
       ticket 
       INNER JOIN
          clienti 
          ON ticket.idcliente = clienti.idcliente 
       INNER JOIN
          impianto 
          ON ticket.idimpianto = impianto.idimpianto 
       INNER JOIN
          localita 
          ON impianto.idlocalita = localita.idlocalita 
       LEFT JOIN
          (
             SELECT
                idticket,
                dataagg,
                (
                   SELECT
                      assegnatoruolo 
                   FROM
                      ticket_agg t2 
                   WHERE
                      agg.idticket = t2.idticket 
                      AND agg.dataagg = t2.dataagg
                )
                assegnatoruolo_agg,
                (
                   SELECT
                      assegnatopers 
                   FROM
                      ticket_agg t2 
                   WHERE
                      agg.idticket = t2.idticket 
                      AND agg.dataagg = t2.dataagg
                )
                assegnatopers_agg 
             FROM
                (
                   SELECT
                      idticket,
                      Max(dataagg) AS dataagg 
                   FROM
                      ticket_agg 
                   GROUP BY
                      idticket
                )
          )
          AS agg 
          ON ticket.idticket = agg.idticket 
    WHERE
       ticket.chiuso = 'no' 
       AND impianto.attivo = 'si' 
    ORDER BY
       ticket.dataapertura,
       ticket.numero,
       clienti.nome,
       impianto.localita,
       impianto.provincia

  7. #7
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    AL momento ho risolto in maniera poco carina con php, ma riuscire a fare questa query oramai è una sfida

    Avevo perso il tuo messaggio guardo....

  8. #8
    così è più facile capire dove manca (verso il fondo )

  9. #9
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Ho fatto questa modifica:
    codice:
    SELECT
                      idticket,
                      Max(dataagg) AS dataagg 
                   FROM
                      ticket_agg 
                   GROUP BY
                      idticket
                )
                aggiornato_al
    e ho l'errore
    #1054 - Unknown column 'agg.idticket' in 'where clause'

    Come mio solito provo a isolare i problemi mettendo a parte questo blocco:
    codice:
          (
             SELECT
                idticket,
                dataagg,
                (
                   SELECT
                      assegnatoruolo 
                   FROM
                      ticket_agg t2 
                   WHERE
                      agg.idticket = t2.idticket 
                      AND agg.dataagg = t2.dataagg
                )
                assegnatoruolo_agg,
                (
                   SELECT
                      assegnatopers 
                   FROM
                      ticket_agg t2 
                   WHERE
                      agg.idticket = t2.idticket 
                      AND agg.dataagg = t2.dataagg
                )
                assegnatopers_agg 
             FROM
                (
                   SELECT
                      idticket,
                      Max(dataagg) AS dataagg 
                   FROM
                      ticket_agg 
                   GROUP BY
                      idticket
                )
                aggiornato_al
          )
          AS agg
    e ho l'errore
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'AS agg

    ---
    Domanda che non centra ho due tabelle con alias t2 ho provato anche a fare t1, t2, t3 ma non cambia il risultato.

    Grazie degli aiuti

  10. #10
    non è che devi fare una subquery per ogni campo...

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.