Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [MySQL] Problema con subquery e JSON

    ciao!

    avrei la necessità di tirare su dei dati, da trasformare poi in json (attraverso un qualsiasi linguaggio lato server).
    partendo da una tabella articoli, devo tirare fuori anche tutte le immagini salvate su un'altra tabella, collegata ad articoli tramite id.
    ho provato banalmente così:
    codice:
    SELECT articolo_codice SKU_CODE, articolo_nome_eng TITLE, tipo_nome_eng TYPE,
                sezione_nome_eng SECTION, categoria_nome_eng CATEGORY, brand_nome BRAND, giacenza_tg SIZE,
                giacenza_qta QUANTITY, 
                
                (
                    SELECT CONCAT('http://www.sito.it/', img_nome)
                     FROM immagini_articolo
                     WHERE fk_articolo = articolo_id
                ) IMAGES, 
                
                colore_nome_eng COLOR, articolo_descrizione_eng DESCRIPTION, articolo_prezzo PRICE
                FROM articoli
                INNER JOIN tipi ON fk_tipo = tipo_id
                INNER JOIN sezioni ON fk_sezione = sezione_id
                INNER JOIN categorie ON fk_categoria = categoria_id
                INNER JOIN brands ON fk_brand = brand_id
                INNER JOIN giacenze ON giacenze.fk_articolo = articolo_id
                INNER JOIN colori ON colore_id = fk_colore
                WHERE articolo_pubblicato = 1 
                ORDER BY articolo_codice, giacenza_tg
    ma ottengo ovviamente l'errore:
    codice:
    #1242 - Subquery returns more than 1 row
    come si fa in questi casi??
    qualche consiglio??

  2. #2
    per ora ho usato un mix di CONCAT e GROUP_CONCAT e sono riuscito a creare un json valido:
    codice:
    SELECT articolo_codice SKU_CODE, articolo_nome_eng TITLE, tipo_nome_eng TYPE,
                sezione_nome_eng SECTION, categoria_nome_eng CATEGORY, brand_nome BRAND, giacenza_tg SIZE,
                giacenza_qta QUANTITY, 
                (
                    SELECT CONCAT("[", GROUP_CONCAT(
                        CONCAT("{\'IMG\':" , "\'http://www.sito.it/", img_nome, "\'}")
                    ), "]")
                     FROM immagini_articolo
                     WHERE fk_articolo = articolo_id
                ) IMAGES, 
                colore_nome_eng COLOR, articolo_descrizione_eng DESCRIPTION, articolo_prezzo PRICE
                FROM articoli
                INNER JOIN tipi ON fk_tipo = tipo_id
                INNER JOIN sezioni ON fk_sezione = sezione_id
                INNER JOIN categorie ON fk_categoria = categoria_id
                INNER JOIN brands ON fk_brand = brand_id
                INNER JOIN giacenze ON giacenze.fk_articolo = articolo_id
                INNER JOIN colori ON colore_id = fk_colore
                WHERE articolo_pubblicato = 1 
                ORDER BY articolo_codice, giacenza_tg
    il result set è poi dato in pasto a un json_encode.
    è validato e corretto, anche se non penso sia la soluzione migliore....

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.