Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [MYSQL] Problema inspiegabile SELECT di una SELECT

    Salve amici, non riesco proprio a capire dove sia l'errore di questa query:

    codice:
    SELECT COM_ID, SUM(QU) AS TOT, SUM(PREZZO) AS PREZZO, TIPO FROM [SELECT (PREZZO*SUM(QU)) AS PREZZO, SUM(QU) AS QU, COM_ID, VOCE, quinto_menu_day.TIPO FROM quinto_ordine JOIN quinto_menu_day ON quinto_ordine.VOCE = quinto_menu_day.PIATTO WHERE quinto_ordine.COM_ID = '24' GROUP BY VOCE ORDER BY ORDINE] AS MAIN GROUP BY TIPO
    Se faccio la sola select interna, mi restituisce correttamente i valori..... se faccio la select della select (anche mettendo SELECT * FROM) mi da il seguente errore:

    codice:
    #1064 - You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near '[SELECT (PREZZO*SUM(QU)) AS PREZZO, SUM(QU) AS QU, COM_ID, VOCE
    Cosa sbaglio?
    Digital XP - The new expression of digital art! - http://www.mimanchitu.it

  2. #2
    hai provato a togliere le parentesi quadre []?

    Te lo segnala anche l'errore, quella prima del SELECT, e ovviamente poi quella che chiude

    Change to Improve

  3. #3
    ...from (select ...) ...

    e non

    ...from [select ...] ...

  4. #4

    magari

    ehehe magari fosse quello il problema! No, quelle le avevo messe per farvi capire!
    Ninete non trovo soluione....ma un bug della versione di mysql?!
    Digital XP - The new expression of digital art! - http://www.mimanchitu.it

  5. #5

    Re: magari

    Originariamente inviato da iadream
    ehehe magari fosse quello il problema! No, quelle le avevo messe per farvi capire!
    complimenti, almeno dillo prima!

    comunque, mi pare strano (prezzo*sum(qu)) io farei sum(prezzo*qu)

  6. #6

    ok

    Ok provo, ma ripeto che se faccio solo la select interna, non mi restituisce errore!
    Cioè se scrivo solo questo:

    codice:
    SELECT (PREZZO*SUM(QU)) AS PREZZO, SUM(QU) AS QU, COM_ID, VOCE, quinto_menu_day.TIPO FROM quinto_ordine JOIN quinto_menu_day ON quinto_ordine.VOCE = quinto_menu_day.PIATTO WHERE quinto_ordine.COM_ID = '24' GROUP BY VOCE ORDER BY ORDINE
    va tutto bene, mentre se aggiungo la select di questa select, mi da quell'errore!
    Digital XP - The new expression of digital art! - http://www.mimanchitu.it

  7. #7
    può anche darsi che MAIN sia una parola riservata, prova col solito AS PIPPO

  8. #8
    Ciao,
    ipotizzando che la select da te indicata sia questa, quindi eliminiamo dubbi:

    SELECT COM_ID, SUM(QU) AS TOT, SUM(PREZZO) AS PREZZO, TIPO FROM
    (SELECT
    (PREZZO*SUM(QU)) AS PREZZO,
    SUM(QU) AS QU,
    COM_ID,
    VOCE,
    quinto_menu_day.TIPO
    FROM quinto_ordine
    JOIN quinto_menu_day ON quinto_ordine.VOCE = quinto_menu_day.PIATTO
    WHERE quinto_ordine.COM_ID = '24'
    GROUP BY VOCE
    ORDER BY ORDINE
    ) AS MAIN
    GROUP BY TIPO


    - mancano le group by sulla select interna... mi sembra strano che dici "facendo la select interna non ho errori...". Anche sul prezzo devi metterla in group by oppure applicare una funzione di aggregazione
    - mancano le group by sulla select esterna


    SELECT COM_ID, SUM(QU) AS TOT, SUM(PREZZO) AS PREZZO, TIPO FROM
    (SELECT
    (PREZZO*SUM(QU)) AS PREZZO,
    SUM(QU) AS QU,
    COM_ID,
    VOCE,
    quinto_menu_day.TIPO
    FROM quinto_ordine
    JOIN quinto_menu_day ON quinto_ordine.VOCE = quinto_menu_day.PIATTO
    WHERE quinto_ordine.COM_ID = '24'
    GROUP BY VOCE , COM_ID, quinto_menu_day.TIPO
    ORDER BY ORDINE
    ) AS MAIN
    GROUP BY TIPO , COM_ID

    Comincia ad applicare queste modifiche e facci sapere come va

    Ciao
    Mik

  9. #9

    niente

    Niente, stesso identico errore! Ho provato anche ad eliminare le sum, a sostituire main!
    Ribadisco che la select interna, così come scritta da me, funziona!
    Digital XP - The new expression of digital art! - http://www.mimanchitu.it

  10. #10
    Ciao,
    con le tabelle:

    CREATE TABLE `quinto_ordine` (
    `VOCE` varchar(50) DEFAULT NULL,
    `COM_ID` varchar(50) DEFAULT NULL,
    `ORDINE` varchar(50) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;


    CREATE TABLE `quinto_menu_day` (
    `TIPO` varchar(50) DEFAULT NULL,
    `PIATTO` varchar(50) DEFAULT NULL,
    `PREZZO` int(11) DEFAULT NULL,
    `QU` int(11) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

    e i valori:
    codice:
    VOCE		COM_ID	ORDINE
    RECCHIETELLE	24	AAA1
    CIME DI RAPA	24	BBB1
    codice:
    TIPO	PIATTO		PREZZO	QU
    PRIMO	RECCHIETELLE	10	50
    SECONDO	CIME DI RAPA	15	60
    sia con la mia query e sorpresa.... anche con la tua prima query, non ci sono errori e restituisce i seguenti dati:

    codice:
    COM_ID	TOT	PREZZO	TIPO
    24	50	500	PRIMO
    24	60	900	SECONDO
    Finale..... ma che versione di mysql utilizzi??? Le subquery sono state messe a disposizione dalla 4.1 in poi!!

    Ciao
    Mik

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.