Newsgroup: it.comp.www.php
Titolo: che differenza c'é?

Ciao a tutti!
Oggi ho avuto un problema davvero curioso. Sto finendo uno stupidissimo
programmino per registrare gli orari di ingresso ed uscita dei
dipendenti, con la possibilità di ottenere il cumulo di ore di
recupero, permessi e ferie. In un punto mi servono i dati forniti dalla
query sottostante usando il codice php come segue:
$query = "
 SELECT
   tDipendenti.id as idDipendente, nome, cognome,
   tDipendenti.ferieDisponibili as ferieIniziali,
   COALESCE ( sum( tRegistrazioni.ferie ), 0 ) AS ferieGodute,
   tDipendenti.orePermesso as permessiIniziali,
   tDipendenti.oreRecupero as recuperiIniziali,
   COALESCE ( sum( tCombinazioni.orePermesso     ), 0 ) as
permessiGoduti,
   COALESCE ( sum( tCombinazioni.oreDaRecuperare ), 0 ) as
recuperiAccumulati,
   COALESCE ( sum( tCombinazioni.oreRecuperate   ), 0 ) as
recuperiGoduti
   FROM
     `tdipendenti`
   LEFT JOIN tRegistrazioni ON tDipendenti.id =
tRegistrazioni.idDipendente
   LEFT JOIN tCombinazioni ON tCombinazioni.id =
tRegistrazioni.idCombinazione
   GROUP BY idDipendente
   ORDER BY cognome, nome desc";
Provata in phpMyAdmin funziona perfettamente. Però dal programma mi da
errore, dicendomi che la funzione nomedb.COALESCE non esiste. Se uso il
codice prodotto da phpMyAdmin funziona correttamente. Il codice è
questo:
$query = 'SELECT '
  . ' tDipendenti . id as idDipendente , nome , cognome , '
  . ' tDipendenti . ferieDisponibili as ferieIniziali , '
  . ' COALESCE( sum( tRegistrazioni . ferie ) , 0 ) AS ferieGodute , '
  . ' tDipendenti . orePermesso as permessiIniziali , '
  . ' tDipendenti . oreRecupero as recuperiIniziali , '
  . ' COALESCE( sum( tCombinazioni . orePermesso ) , 0 ) as
permessiGoduti , '
  . ' COALESCE( sum( tCombinazioni . oreDaRecuperare ) , 0 ) as
recuperiAccumulati , '
  . ' COALESCE( sum( tCombinazioni . oreRecuperate ) , 0 ) as
recuperiGoduti '
  . ' FROM '
  . ' `tdipendenti` '
  . ' LEFT JOIN tRegistrazioni ON tDipendenti . id = tRegistrazioni .
idDipendente '
  . ' LEFT JOIN tCombinazioni ON tCombinazioni . id = tRegistrazioni .
idCombinazione '
  . ' '
  . ' GROUP BY idDipendente '
  . ' ORDER BY cognome , nome desc';
Non riesco a capire la differenza.
Qualcuno mi aiuta a capire onde evitare di diventare scemo in futuro
per queste cose?
Grazie mille.

 
E' un problema di visualizzazione oppure la seconda query ha i 
table.field separati da spazio?
Inoltre i nomi delle funzioni[1] non devono avere lo spazio prima della 
parentesi
	Francesco
[1] Alcune lo permettano, altre no!
mysql> select left('abc', 2);
+----------------+
| left('abc', 2) |
+----------------+
| ab             |
+----------------+
1 row in set (0.00 sec)
mysql> select left ('abc', 2);
+-----------------+
| left ('abc', 2) |
+-----------------+
| ab              |
+-----------------+
1 row in set (0.00 sec)
mysql> SELECT COALESCE(NULL,1);
+------------------+
| COALESCE(NULL,1) |
+------------------+
|                1 |
+------------------+
1 row in set (0.00 sec)
mysql> SELECT COALESCE (NULL,1);
ERROR 1064 (42000): 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 '(NULL,1)' at line 1
mysql>

 parentesi
oops... ecco il problema.. non lo sapevo... grazie mille!