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

Discussione: Query select

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2015
    Messaggi
    21

    Query select

    Ciao a tutti,
    ho questa query che opera su un db di prestashop ma non riesco a unire i risultati di entrambe le tabelle.

    Lo scopo è visualizzare tutti i prodotti che sono stati acquistati con le relative quantità e i relativi nomi dei prodotti raggruppati per città.

    SELECT P.reference as Code, PL.`name` as Product_Name, COUNT(OD.id_order) as ordered_qty
    FROM ps_product P
    LEFT JOIN ps_product_lang PL ON P.id_product = PL.id_product
    LEFT JOIN ps_order_detail OD ON P.id_product = OD.product_id
    LEFT JOIN ps_orders O ON O.id_order = OD.id_order
    WHERE O.valid = 1
    UNION

    SELECT o.`id_order` as "order id" ,concat(ad.`city`) as "Delivery_Address"
    FROM `ps_orders` o
    join `ps_customer` cs on o.`id_customer`=cs.`id_customer`
    join `ps_address` ad on o.`id_address_delivery`=ad.`id_address`
    order by ad.city;


    Qualcuno può aiutarmi?

  2. #2
    quale sarebbe il problema?

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2015
    Messaggi
    21
    il problema sarebbe che visualizzo solo la query che non è e dentro la UNION

  4. #4
    non ho capito, puoi fare un esempio?

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2015
    Messaggi
    21
    la prima query seleziona tutti i prodotti acquistati con le relative quantità e la seconda i clienti che hanno effettuato acquisti.
    Ok, se salvo questa query mi visualizza solo i prodotti acquistati e non la query che si trova nella union che ha i compito di selezionare gli ordini dei clienti

    spero di essermi spiegata

  6. #6
    Quote Originariamente inviata da locen Visualizza il messaggio
    Ciao a tutti,
    ho questa query che opera su un db di prestashop ma non riesco a unire i risultati di entrambe le tabelle.

    Lo scopo è visualizzare tutti i prodotti che sono stati acquistati con le relative quantità e i relativi nomi dei prodotti raggruppati per città.

    SELECT P.reference as Code, PL.`name` as Product_Name, COUNT(OD.id_order) as ordered_qty
    FROM ps_product P
    LEFT JOIN ps_product_lang PL ON P.id_product = PL.id_product
    LEFT JOIN ps_order_detail OD ON P.id_product = OD.product_id
    LEFT JOIN ps_orders O ON O.id_order = OD.id_order
    WHERE O.valid = 1
    UNION

    SELECT o.`id_order` as "order id" ,concat(ad.`city`) as "Delivery_Address"
    FROM `ps_orders` o
    join `ps_customer` cs on o.`id_customer`=cs.`id_customer`
    join `ps_address` ad on o.`id_address_delivery`=ad.`id_address`
    order by ad.city;


    Qualcuno può aiutarmi?
    La union può essere fatta SOLO se le queries hanno lo stesso numero di campi (nel tuo caso la prima query ha 3 campi e la seconda due), i campi devono essere dello stesso tipo e non ci deve essere la order by.

    https://docs.oracle.com/cd/B19306_01...queries004.htm

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2015
    Messaggi
    21
    Grazie, sto provando ma non ci salto fuori lo stesso perchè non so che campo mettere nella tabella in cui ci sono due campi

  8. #8
    Moderatore di Windows e software L'avatar di URANIO
    Registrato dal
    Dec 1999
    residenza
    Casalpusterlengo (LO)
    Messaggi
    1,287
    Select nome_prodotto, città, count(*)
    From blablabla
    Group by nome_prodotto, città

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2015
    Messaggi
    21
    quando eseguo la query non mi dà nessun risultato in questo modo

  10. #10
    --Query che da il numero di ordini per ogni tipo di prodotto


    SELECT P.reference as Code, PL.name as Product_Name ,COUNT(OD.id_order) as ordered_qty
    FROM ps_product P
    LEFT JOIN ps_product_lang PL ON P.id_product = PL.id_product
    LEFT JOIN ps_order_detail OD ON P.id_product = OD.product_id
    LEFT JOIN ps_orders O ON O.id_order = OD.id_order
    WHERE O.valid = 1
    GROUP BY P.reference, PL.name; --Aggiunto per avere il numero di ordini di ogni prodotto


    --Query che da informazioni dei clienti e gli indirizzi di tutti gli ordini


    SELECT o.`id_order` as "order id" ,ad.`city` as "Delivery_Address"
    FROM `ps_orders` o
    join `ps_customer` cs on o.`id_customer`=cs.`id_customer`
    join `ps_address` ad on o.`id_address_delivery`=ad.`id_address`
    order by ad.city;


    1) Stai cercando di unire due tipi di entità diverse, ha senso?
    al massimo potresti avere una tabella formata dall'elenco dei prodotti, il numero ordini per tale prodotto, una stringa contentente tutti i clienti, e una stringa contenente tutti gli indirizzi


    2) perchè usi il concat nella seconda query? cosa vuoi concatenare?

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.