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

Discussione: Json con GROUP_CONCAT

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    371

    Json con GROUP_CONCAT

    Salve a tutti, estrapolo i miei dati in questo modo:
    Codice PHP:
    SELECT 
    tb_user
    .cognome,
     
    tb_user.nome,
    GROUP_CONCAT(
    CASE 
    WHEN WEEKDAY(calendar.start) = 0 THEN 
    CONCAT
    (
    '{
    start:'
    ,calendar.start,'num:',tb_odl.num,',Desc:',tb_odl.Desc,',Notes:',calendar.Notes,',Color:',tb_odl.color,',Icona:',tb_odl.Icona,'}'
    )END) AS Event1,
    .......................... 
    ma gradirei che in Event1 mi restituisse un Json.
    Come posso fare ?

  2. #2

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    371
    Risolto cosi :
    codice:
    GROUP_CONCAT(
    CASE WHEN WEEKDAY(calendar.start) = 0 THEN CONCAT('[',json_object('start',calendar.start),']')END) AS Event1,

  4. #4
    json_object è una funzione che non è presente in tutte le versioni di mySQL; nel caso, nel post che ho linkato ci sono anche le info per le vecchie versioni

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    371
    Quote Originariamente inviata da optime Visualizza il messaggio
    json_object è una funzione che non è presente in tutte le versioni di mySQL; nel caso, nel post che ho linkato ci sono anche le info per le vecchie versioni
    Si Grazie 1000.
    Visto che ho un CASE in mezzo, unica cosa che non ho capito la posizione delle parentesi quadre.
    Ho provato anche cosi:
    Codice PHP:
    GROUP_CONCAT('[',
    CASE 
    WHEN WEEKDAY(calendar.start) = 0 THEN 
    CONCAT
    (json_object('start',calendar.start))END ,']') AS Event1
    ed ottengo questo risultato che non è valido.
    Codice PHP:
    [{"start""2021-04-19 07:30:00.000000"}],[{"start""2021-04-1907:50:00.000000"}] 

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    371
    Quote Originariamente inviata da max1974 Visualizza il messaggio
    Si Grazie 1000.
    Visto che ho un CASE in mezzo, unica cosa che non ho capito la posizione delle parentesi quadre.
    Ho provato anche cosi:
    Codice PHP:
    GROUP_CONCAT('[',
    CASE 
    WHEN WEEKDAY(calendar.start) = 0 THEN 
    CONCAT
    (json_object('start',calendar.start))END ,']') AS Event1
    ed ottengo questo risultato che non è valido.
    Codice PHP:
    [{"start""2021-04-19 07:30:00.000000"}],[{"start""2021-04-1907:50:00.000000"}] 
    Mancava un CONCAT
    Codice PHP:
    CONCAT('[',GROUP_CONCAT(CASE WHEN WEEKDAY(calendar.start) = 0 THEN CONCAT(json_object('start',calendar.start))END ),']') AS Event1

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    371
    Salve a tutti , adesso mi è sorto il problema dopo la query sopra.
    In poche parole Event1 contiene più di 253 caratteri e quanto pare "CONCAT" non li gestisce.
    Correggetemi se sbaglio.
    Come Ovviare ???

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    371
    Quote Originariamente inviata da max1974 Visualizza il messaggio
    Salve a tutti , adesso mi è sorto il problema dopo la query sopra.
    In poche parole Event1 contiene più di 253 caratteri e quanto pare "CONCAT" non li gestisce.
    Correggetemi se sbaglio.
    Come Ovviare ???
    Cosi potrebbe andar bene ?
    Codice PHP:
    SET SESSION group_concat_max_len 100000 

  9. #9
    SET SESSION group_concat_max_len = 1000000;

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    371
    Quote Originariamente inviata da optime Visualizza il messaggio
    SET SESSION group_concat_max_len = 1000000;
    Esatto cosi Funziona. Grazie 1000

    Invece trovo anomalia in :
    Codice PHP:
    SELECT 
    CASE WHEN WEEKDAY(calendar.start) = 0 THEN CONCAT('[',GROUP_CONCAT(json_object('start',calendar.start)),']'END AS Lunedi,
    CASE 
    WHEN WEEKDAY(calendar.start) = 1 THEN CONCAT('[',GROUP_CONCAT(json_object('start',calendar.start)),']'END AS Martedi,
    CASE 
    WHEN WEEKDAY(calendar.start) = 2 THEN CONCAT('[',GROUP_CONCAT(json_object('start',calendar.start)),']'END AS  Mercoledi,
    CASE 
    WHEN WEEKDAY(calendar.start) = 3 THEN CONCAT('[',GROUP_CONCAT(json_object('start',calendar.start)),']'END AS  Giovedi,
    CASE 
    WHEN WEEKDAY(calendar.start) = 4 THEN CONCAT('[',GROUP_CONCAT(json_object('start',calendar.start)),']'END AS  Venerdi,
    CASE 
    WHEN WEEKDAY(calendar.start) = 5 THEN CONCAT('[',GROUP_CONCAT(json_object('start',calendar.start)),']'END AS  Sabato,
    CASE 
    WHEN WEEKDAY(calendar.start) = 6 THEN CONCAT('[',GROUP_CONCAT(json_object('start',calendar.start)),']'END AS  Domenica
    FROM calendar
    WHERE WEEK
    (calendar.start) = 16 AND YEAR(calendar.start) = 2021 
    come result ho

    Lunedi 19-04-2021
    Martedi 20-04-2021
    Mercoledi 21-04-2021
    Giovedi 22-04-2021
    Venerdi 23-04-2021
    Sabato 24-04-2021
    Domenica 18-04-2021

    Gradirei Domenica 25-04-2021.

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 © 2021 vBulletin Solutions, Inc. All rights reserved.