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

    [MYSQL] Problema con subquery e servizio REST

    ciao!
    devo creare un servizio REST con questi campi:
    codice:
    IDProduttore     
    NomeProduttore 
    NomeProdotto     
    Descrizione     
    NomeAttributo1     
    ValoreAttributo1     
    NomeAttributo2     
    ValoreAttributo2     
    URLImmagine1     
    URLImmagine2     
    URLImmagine3     
    URLImmagine4     
    URLImmagine5     
    URLImmagine6     
    URLImmagine7     
    URLImmagine8     
    PrezzoPieno     
    PrezzoVendita     
    PrezzoAcquisto     
    Iva    
    Stoccaggio
    il mio unico problema riguarda i vari URLImmagineX.
    i path delle immagini sono salvati in una tabella collegata tramite FK alla tabella articoli.
    ogni articolo può avere da una ad infinite immagini.
    ed io ne devo prendere da un minimo di una ad un massimo di 8.
    etichettandole come nel tracciato.
    al momento ho creato questa query:
    codice:
                SELECT
                CONCAT(articolo_codice, "_", giacenza_id) IDProduttore,
                brand_nome NomeProduttore,
                articolo_nome NomeProdotto,
                articolo_descrizione_ita Descrizione,
                giacenza_tg Taglia,
                colore_nome Colore,
                (
                    SELECT CONCAT("[", GROUP_CONCAT(
                        CONCAT("{\'IMG\':" img_nome, "\'}")
                    ), "]")
                    FROM immagini_articolo
                    WHERE fk_articolo = articolo_id
                    LIMIT 8
                ) IMMAGINI,
                articolo_prezzo PrezzoPieno,
                articolo_prezzo PrezzoVendita,
                0 PrezzoAcquisto,
                22 IVA,
                giacenza_qta Stoccaggio
                FROM articoli
                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 ovviamente non va bene, perchè mi passa le immagini come array.
    e non come "campi" richiesti dal tracciato.
    secondo voi come posso fare?

  2. #2
    ....
    (SELECT img_nome WHERE fk_articolo = articolo_id LIMIT 1 OFFSET 1) AS URLImmagine1,
    (SELECT img_nome WHERE fk_articolo = articolo_id LIMIT 1 OFFSET 2) AS URLImmagine2,
    ecc ecc

  3. #3
    ciao optime!

    si in effetti avevo pensato la stessa cosa, ma non mi convinceva...

    cmq ho provato con il tuo esempio:
    codice:
                SELECT
                CONCAT(articolo_codice, "_", giacenza_id) IDProduttore,
                brand_nome NomeProduttore,
                articolo_nome NomeProdotto,
                articolo_descrizione_ita Descrizione,
                giacenza_tg Taglia,
                colore_nome Colore,
                (SELECT img_nome WHERE fk_articolo = articolo_id LIMIT 1 OFFSET 1) AS URLImmagine1,
                (SELECT img_nome WHERE fk_articolo = articolo_id LIMIT 1 OFFSET 2) AS URLImmagine2,
                articolo_prezzo PrezzoPieno,
                articolo_prezzo PrezzoVendita,
                0 PrezzoAcquisto,
                22 IVA,
                giacenza_qta Stoccaggio
                FROM articoli
                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 = ? 
                ORDER BY articolo_codice, giacenza_tg
    ma ottengo un errore:
    codice:
    #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 'WHERE fk_articolo = articolo_id LIMIT 1 OFFSET 1) AS  URLImmagine1,
                ' at line 8

  4. #4
    no ok, ho corretto e adesso funziona.

    codice:
    (SELECT img_nome FROM immagini_articolo WHERE immagini_articolo.fk_articolo = articoli.articolo_id LIMIT 1 OFFSET 1) URLImmagine1,
    (SELECT img_nome FROM immagini_articolo WHERE immagini_articolo.fk_articolo = articoli.articolo_id LIMIT 1 OFFSET 2) URLImmagine2,
    grazie per il suggerimento, adesso faccio qualche prova!

  5. #5

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