Errore query php vs sql server

Ho la seguente query:

SELECT t_apparati.id_apparato, t_apparati.ckin, t_apparati.sn_ier, t_apparati.modello, MAX(t_manutenzioni.data_manutenzione) AS data FROM t_apparati LEFT JOIN t_manutenzioni ON t_apparati.id_apparato = t_manutenzioni.id_apparato WHERE modello = '" . $_GET['mod'] . "' GROUP BY t_apparati.id_apparato;

su mysql funziona senza problemi, sql server mi viene restituito questo errore:

Warning: mssql_query() [function.mssql-query]: message: La colonna 't_apparati.ckin' non è valida nell'elenco di selezione perché non è inclusa né in una funzione di aggregazione né nella clausola GROUP BY. (severity 16) in C:\Programmi\Apache Group\Apache2\htdocs\arc-db\php\elenchi\elenco_completo.php on line 78

cosa significa.

inviato 7 anni fa
Nando
X 0 X

L'errore parla chiaro, l'SQL Server di Microsoft (ma anche Oracle) non funziona come MySQL  :dunno:

 :bye:

risposto 7 anni fa
Gianni Tomasicchio
X 0 X

quindi non posso utilizzare l'applicativo che ho fatto con sql server ?

E' molto strano xké se lancio query semplici funziona.

risposto 7 anni fa
Nando
X 0 X

L'SQL purtroppo non è poi così portabile da un database ad un altro:

http://www.phpnews.it/blog/2008/06/11/database-portability-un-mito/

Comunque potresti modificare quella query secondo quanto riportato nell'errore e vedrai che funzionerà anche in MySQL

 :bye:

risposto 7 anni fa
Gianni Tomasicchio
X 0 X

Ma su MySQL funziona senza problemi tutto, è su SQL Serve che non va e non solo quello, anche javascript non funziona. Certo che la cosa è molto strana, in fondo quello che cambio è solo la stringa di connessione, non ho toccato nulla nel web server.

Se non mi sbaglio PostgreSQL è del tutto gratuito quindi potrei fare installare questo al cliente. Sperando che non mi dia anche problemi.

risposto 7 anni fa
Nando
modificato 7 anni fa
X 0 X

E' MySQL il problema... nel senso che è MySQL ad accettare una sintassi nelle GROUP BY che non è SQL puro. Direttamente dalla documentazione ufficiale di MySQL:

MySQL extends the use of GROUP BY so that you can use non-aggregated columns or calculations in the SELECT list that do not appear in the GROUP BY clause. You can use this feature to get better performance by avoiding unnecessary column sorting and grouping. For example, you do not need to group on customer.name in the following query:

SELECT order.custid, customer.name, MAX(payments)
  FROM order,customer
  WHERE order.custid = customer.custid
  GROUP BY order.custid;

In standard SQL, you would have to add customer.name to the GROUP BY clause. In MySQL, the name is redundant.

Do not use this feature if the columns you omit from the GROUP BY part are not constant in the group. The server is free to return any value from the group, so the results are indeterminate unless all values are the same.

Non so cosa possa centrare Javascript con MySQL o SQL Server....

Non essere così certo di passare a PostgreSQL e di non avere problemi.

 :bye:

risposto 7 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda