Visualizzazione risultati 1 fino 3 di 3
Like Tree1Likes
  • 1 Post By

Discussione: Query mysql - come eseguire operazioni all'interno dei una query

  1. #1
    Data registrazione
    05-02-2013
    Messaggi
    27

    Predefinito Query mysql - come eseguire operazioni all'interno dei una query

    Salve a tutti.
    Ho la necessità di eseguire la seguente query:
    Codice:
    SELECT 
      `u`.`id`,
      TIMESTAMPDIFF(MINUTE,`f`.`start`,CURRENT_TIMESTAMP()) AS `time-from-start`,
      MAX(`f`.`meetings-count`) AS `mc_max`,
      MIN(`f`.`meetings-count`) AS `mc_min`,
      AVG(`f`.`meetings-count`) AS `mc_avg`,
      MAX(`f`.`time-sum`) AS `ts_max`,
      MIN(`f`.`time-sum`) AS `ts_min`,
      AVG(`f`.`time-sum`) AS `ts_avg`,
      MAX(`f`.`time`) AS `t_max`,
      MIN(`f`.`time`) AS `t_min`,
      AVG(`f`.`time`) AS `t_avg`,
      MAX(`f`.`time-to`) AS `tt_max`,
      MIN(`f`.`time-to`) AS `tt_min`,
      AVG(`f`.`time-to`) AS `tt_avg`,
      MAX(`f`.`distance`) AS `d_max`,
      MIN(`f`.`distance`) AS `d_min`,
      AVG(`f`.`distance`) AS `d_avg`,
      ((`f`.`distance`-`d_min`)/(`d_max`-`d_min`)) AS `d`,
      ((`f`.`meetings-count`-`mc_min`)/(`mc_max`-`mc_min`) * `d`) AS `mc`,
      ((`f`.`time-sum`-`ts_min`)/(`ts_max`-`ts_min`) * `d`) AS `ts`,
      ((`f`.`time`-`t_min`)/(`t_max`-`t_min`) * `d`) AS `t`,
      ((`f`.`time-to`-`tt_min`)/(`tt_max`-`tt_min`) * `d`) AS `tt`
    FROM
      `Familiarity` AS `f`,
      `User` AS `u` 
    WHERE 
      `f`.`user1` = `u`.`id`
    OR
      `f`.`user2` = `u`.`id`
    GROUP BY `u`.`id`
    ORDER BY `u`.`id` ASC
    L'errore che mi viene restituito è "Unknown column 'd_min' in 'field list'", il che mi fa pensare che non vede i nuovi fiel creati all'interno dello stesso select.

    Quello che vi chiedo è: esiste un modo diverso per ottenere lo stesso risultato?

    Pensavo di usare le VIEW per una seconda elaborazione della query, ma AV non mette a disposizione questo servizio.

    Grazie in anticipo per i vostri commenti.
    Ultima modifica di ravimatsolutions : 16-04-2016 alle ore 12.46.09

  2. #2
    Guest

    Predefinito

    Con l'istruzione select non viene creato alcun campo (filed) ma associ ad un elemento un alias.
    Nel caso delle operazioni non usare l'alias ma il campo, quindi, ad esempio, non

    Codice PHP:
    ((`f`.`distance`-`d_min`)/(`d_max`-`d_min`)) AS `d`,
    ma

    Codice PHP:
    ((`f`.`distance`-MIN(`f`.`distance`))/(MAX(`f`.`distance`)-MIN(`f`.`distance`))) AS `d`,
    .

    Io mi sento di consigliarti però, visto che si tratta di semplici operazioni di estrarre solo i valori e calcolarti (via PHP) il resto al momento dell'uso (output, passaggio ad altre funzioni, ecc).
    ravimatsolutions likes this.

  3. #3
    Data registrazione
    05-02-2013
    Messaggi
    27

    Predefinito

    Grazie plaza.

Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •