Questo sito utilizza cookie tecnici e di terze parti. Continuando la navigazione sul nostro sito accetti l'uso dei cookie. Per saperne di più leggi l'informativa sui cookie.   


MySql - Recuperare campi da query nidificate
Ultimo messaggio: 13 nov 2018 17:40 di Giorgio Leonardi. 4 Risposte.
Stampa gradevole
Solo gli utenti registrati possono rispondere ad una discussione.
Avatar
Ato - Antonio Giornetta
Messaggi: 390
Iscritto dal: 30 apr 2012 01:19
Utente
Utente

05 nov 2018 17:31
Ciao a tutti,

non riesco a capire come fare per recuperare i campi da una query nidificata,

per esempio :

select
clienti.Codice,
Nominativo,
Indirizzo,
Cap,
ImpParziale,
NumeroOrdini

from

clienti

where

indirizzo like '%GARIBALDI%'
and clienti.codice in

(select
Ordini.Codice,
sum(ifnull(Importo,0)) as ImpParziale,
count(Progressivo) as NumeroOrdini
from Ordini where importo>10
group by Ordini.Codice
)


ecco, vorrei mostrare anche i campi in grassetto ImpParziale e NumeroOrdini

mi date una mano per cortesia ?

Grazie a tutti.

    http://www.antoniogiornetta.it Andate sul mio sito...leggerete una bella storia a fumetti del mio paesino :)
    Avatar
    Ato - Antonio Giornetta
    Messaggi: 390
    Iscritto dal: 30 apr 2012 01:19
    Utente
    Utente

    07 nov 2018 21:03
    novità ?
      http://www.antoniogiornetta.it Andate sul mio sito...leggerete una bella storia a fumetti del mio paesino :)
      Avatar
      Diego Cattaruzza [exMVP]
      Messaggi: 7160
      Iscritto dal: 08 set 2012 12:22
      Team
      Team

      08 nov 2018 19:02

      a me pare che tu debba fare una semplice query di correlazione tra ordini e clienti su codice

      la query nidificata non funziona perché non ha nome

      select c.codice, c.nominativo, c.indirizzo, c.cap, sum(ifnull(o.importo,0) as ImpParziale, count(o.progressivo) as NumeroOrdini

      from clienti as c, ordini as o

      where c.codice = o.codice and o.importo > 10

      group by o.codice

      oppure (perché mi puzza di sbagliato :) )

      select codice, nominativo, indirizzo, cap, sum(importo) as impparziale, count(progressivo) as numeroordini

      from

      (

      select c.codice as codice, c.nominativoas nominativo, c.indirizzo as indirizzo, c.cap as cap, o.importo as importo, o.progressivo as progressivo

      from clienti as c, ordini as o

      where c.codice = o.codice and o.importo > 10

      )

      group by codice

        Diego Cattaruzza
        ex MVP Visual Basic .Net
        blog: Uncensured
        Avatar
        Ato - Antonio Giornetta
        Messaggi: 390
        Iscritto dal: 30 apr 2012 01:19
        Utente
        Utente

        10 nov 2018 10:11
        Grazie Diego, quanto prima farò delle prove.

        Grazie :)

          http://www.antoniogiornetta.it Andate sul mio sito...leggerete una bella storia a fumetti del mio paesino :)
          Avatar
          Giorgio Leonardi
          Messaggi: 1095
          Iscritto dal: 30 apr 2012 01:10
          Utente
          Utente

          13 nov 2018 17:40

          Forse è più efficente fare una join usando il trucco delle first dei dati della tabella "uno" nella relazione uno a molti

           

          Select clienti.Codice, first(clienti.Nominativo), first(clienti.Indirizzo), first(clienti.Cap), sum(ifnull(Ordini.Importo,0)) as ImpParziale, count(Ordini.Progressivo) as NumeroOrdini
          from clienti inner join Ordini
          on Clienti.Codice = ordine.Codice
          where clienti.indirizzo like '%GARIBALDI%' and Ordini.importo>10
          group by Clienti.Codice

           

            Solo gli utenti registrati possono rispondere ad una discussione.