Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    31

    [MYSQL] raggruppamento record

    salve a tutti, avrei una domanda facile facile.
    ho una query che mi restituisce una serie di risultati. io però di questi ne vorrei visualizzare soltanto 6. è possibile farlo tipo con un group by, o la cosa è molto più complessa?
    grazie a tutti per l'aiuto

  2. #2

    Re: [MYSQL] raggruppamento record

    Originariamente inviato da kelmer
    salve a tutti, avrei una domanda facile facile.
    ho una query che mi restituisce una serie di risultati. io però di questi ne vorrei visualizzare soltanto 6. è possibile farlo tipo con un group by, o la cosa è molto più complessa?
    grazie a tutti per l'aiuto
    group by raggruppa, order by esegue un sort, LIMIT ne definisce la quantita'

    ....
    where
    order by
    limit 0,6 (a partire dal record 0 visualizzane 6)

    oppure limit 6 (i primi 6 a prescindere)

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    31

    Re: Re: [MYSQL] raggruppamento record

    Originariamente inviato da piero.mac
    group by raggruppa, order by esegue un sort, LIMIT ne definisce la quantita'

    ....
    where
    order by
    limit 0,6 (a partire dal record 0 visualizzane 6)

    oppure limit 6 (i primi 6 a prescindere)
    grazie per la dritta. ora mi si è presentato un nuovo problema, ossia ottenere la somma di record di una colonna, cosa facile quando la colonna appartiene alla tabella di partenza, ma non trovo una soluzione quando la colonna appartiene alla select ottenuta.
    mi spiego meglio. ho fatto una select in cui creavo un menu con i relativi costi per quella scelta di prodotti. quindi ottengo una lista di menu.ne ho presi sei di questi menu e volevo calcolarmi il costo totale.ho fatto sum(costo_totale) ma la colonna per il database non esiste.
    posto il codice della query per farvi un'idea più precisa:
    codice:
    SELECT tb1.Nome AS Primo, tb2.Nome AS Secondo, tb3.Nome AS Dessert, tb4.Nome AS Bevanda, tb5.Nome AS Pane ,(tb1.valore+tb2.valore+tb3.valore+tb4.valore+ tb5.valore) AS Codice_menu, (tb1.Costo+tb2.Costo+tb3.Costo+tb4.Costo+tb5.Costo) AS Costo_totale FROM PRODOTTO_ALIMENTARE AS tb1, PRODOTTO_ALIMENTARE AS tb2, PRODOTTO_ALIMENTARE AS tb3, PRODOTTO_ALIMENTARE AS tb4, PRODOTTO_ALIMENTARE AS tb5 WHERE tb1.Nome <> tb2.Nome AND tb1.Nome <> tb3.Nome AND tb1.Nome <> tb4.Nome AND tb1.Nome <> tb5.Nome AND tb2.Nome <> tb3.Nome AND tb2.Nome <> tb4.Nome AND tb2.Nome <> tb5.Nome AND tb3.Nome <> tb4.Nome AND tb3.Nome <> tb5.Nome AND tb4.Nome <> tb5.Nome AND tb1.Tipologia="primo" AND tb2.Tipologia="secondo" AND tb3.Tipologia="dessert" AND tb4.Tipologia="bevanda" AND tb5.Tipologia="Pane" AND tb1.Indicazione="celiachia" AND tb2.Indicazione="celiachia" AND tb3.Indicazione="celiachia" AND tb4.Indicazione="celiachia" AND tb5.Indicazione="celiachia" GROUP BY Codice_menu HAVING Costo_totale<=4.50 LIMIT 1,6;

  4. #4
    Non desidero entrare nel merito della struttura del database. Pero' disponendo la query in modo piu' leggibile direi che e' un casino.

    codice:
    SELECT tb1.Nome AS Primo, 
    tb2.Nome AS Secondo, 
    tb3.Nome AS Dessert, 
    tb4.Nome AS Bevanda, 
    tb5.Nome AS Pane ,
    (tb1.valore+tb2.valore+tb3.valore+tb4.valore+ tb5.valore) AS Codice_menu, 
    (tb1.Costo+tb2.Costo+tb3.Costo+tb4.Costo+tb5.Costo) AS Costo_totale 
    FROM PRODOTTO_ALIMENTARE AS tb1, 
    PRODOTTO_ALIMENTARE AS tb2, 
    PRODOTTO_ALIMENTARE AS tb3, 
    PRODOTTO_ALIMENTARE AS tb4, 
    PRODOTTO_ALIMENTARE AS tb5 
    WHERE tb1.Nome <> tb2.Nome 
    AND tb1.Nome <> tb3.Nome 
    AND tb1.Nome <> tb4.Nome 
    AND tb1.Nome <> tb5.Nome 
    AND tb2.Nome <> tb3.Nome 
    AND tb2.Nome <> tb4.Nome 
    AND tb2.Nome <> tb5.Nome 
    AND tb3.Nome <> tb4.Nome 
    AND tb3.Nome <> tb5.Nome 
    AND tb4.Nome <> tb5.Nome 
    AND tb1.Tipologia="primo" 
    AND tb2.Tipologia="secondo" 
    AND tb3.Tipologia="dessert" 
    AND tb4.Tipologia="bevanda" 
    AND tb5.Tipologia="Pane" 
    AND tb1.Indicazione="celiachia" 
    AND tb2.Indicazione="celiachia" 
    AND tb3.Indicazione="celiachia" 
    AND tb4.Indicazione="celiachia" 
    AND tb5.Indicazione="celiachia" 
    GROUP BY Codice_menu 
    HAVING Costo_totale<=4.50 
    LIMIT 1,6;
    La domanda sorge spontanea: ma cosa c'e' dentro a Nome???? perche' deve essere diverso? Per quale ragione ci possono essere nomi uguali tra primo, secondo, terzo, quarto etc...? Perche' crei nn alias della stessa tabella????

    la relazione tra le tabelle dovrebbe avvenire sui campi e non su valori esterni. Es:

    AND tb1.Indicazione=tb2.Indicazione
    AND tb2.Indicazione=tb3.Indicazione
    ......etc
    AND tb1.Indicazione="celiachia"

    per capire qualcosa di piu' bisognerebbe conoscere la struttura del database, il contenuto delle tabelle ed il codice di errore che ricevi.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    31
    La domanda sorge spontanea: ma cosa c'e' dentro a Nome???? perche' deve essere diverso? Per quale ragione ci possono essere nomi uguali tra primo, secondo, terzo, quarto etc...? Perche' crei nn alias della stessa tabella????

    la relazione tra le tabelle dovrebbe avvenire sui campi e non su valori esterni. Es:

    AND tb1.Indicazione=tb2.Indicazione
    AND tb2.Indicazione=tb3.Indicazione
    ......etc
    AND tb1.Indicazione="celiachia"

    per capire qualcosa di piu' bisognerebbe conoscere la struttura del database, il contenuto delle tabelle ed il codice di errore che ricevi.
    allora faccio un po di chiarezza, sennò veramente nn sono capibile...
    la tabella in questione è questa
    PRODOTTO_ALIMENTARE(`Nome`,`Ditta_produttrice`,`Va lore_energetico`,`Carboidrati`,`Grassi`,`Proteine` ,`Costo`,`Indicazione`,`Tipologia`,`Valore`)
    Nome per esempio è penne al sugo, carne ai ferri, ecc..
    dove indicazione sta a dire per chi è adatto il prodotto alimentare,
    tipologia per indicare se è un primo, secondo, dessert, pane o bevanda.
    la necessità di fare questa query è quella di avere come record un menù di 5 prodotti che nn superi un certo costo e che sia adatto ad un range di indicazione( celiachia)però dato che non ho la necessità di creare combinazioni ripetute, o doppie, ho inserito la colonna Valore con ognuno un numero diverso che mi creasse un codice menu diverso da tutti quanti, nonchè la necessità di non avere nello stesso record 2 o più primi con lo stesso nome attraverso la colonna tipologia. la colonna costo_totale mi va a sommare il costo dei singoli prodotti scelti in un unico prezzo che nn superi 4.50.
    io volevo che quando faccio il LIMIT di 6 soli menu, mi creassi un'ulteeriore colonna o riga in cui inserire la somma della colonna Costo_totale dei 6 menu che sono stati scelti.
    spero di esser stata chiara,nn so cosa raccontare di più.

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.