- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- Problemi mysql con condizione
-
La clausola HAVING svolge una funzione di selezione delle righe, esattamente come la WHERE. La differenza è che la WHERE viene applicata sulle righe delle tabelle originali, mentre la HAVING viene applicata sulle righe della tabella risultato dopo i raggruppamenti richiesti dalle GROUP BY. In pratica, è utile per effettuare test sui valori restituiti dalle funzioni di colonna.
IO ho bisogni di applicare la condizione direttamente sulla tabella.
-
@Thedarkita said:
[..]
La funzione e gia inclusa.
Ottengo il risultato, dall'interrogazione della tabella, se escludo AND tot <= '".$improve_email."' (Che in pratica dovrebbe controllare il numero di email presenti nei record)
-
@oraposso said:
La funzione e gia inclusa.
Ottengo il risultato, dall'interrogazione della tabella, se escludo AND tot <= '".$improve_email."' (Che in pratica dovrebbe controllare il numero di email presenti nei record)Non capisco, perche mi accetti la seconda condizione (AND toplist = '0' ), e non la prima. Mi sto rovinado le giornate.
-
Vedi che la sintassi corretta è con HAVING e non con WHERE per quello che stai facendo tu.
Se senza quello funziona allora con la query che ii ho dato io deve funzionare per forza.
Comunque se non metti il mysql_error come ti ho detto. e mi riporti l'errore è impossibile dirti qualsiasi cosa oltre ciò che ti ho già detto.
-
-
La connessione a database, avviene corretamente, il tutto funzione, in particolare con la prima condizione WHERE, mi restituisce esattamente i risultati che voglio ottenere dalla prima interrogazione, la seconda condizione AND tot <= '".$below_multipost."' , che dovrebbe estrapolare il numero di email presenti in un certo lasso temporale, non funziona, ma non perche non si connette al database, ma solo perche la condizione non e in grado di estrapolare i dati (Non ho idea a cosa sia dovuto), ho inserito la condizione HAVING, ma ottengo lo stesso buio che ottenevo prima.
Forse quello che sto cercando di fare, va visto sotto una logica diversa, non so, ma sicuramente quella condizione, non funziona per qualche motivo.
-
Ma queste query come le provi? Perchè se una query non funziona devi farti dare l'errore, altrimenti dobbiamo tirare ad indovinare.
Fai un echo della query cosi:
[php]
echo "SELECT adid, adtitle, COUNT(email) AS tot, email, code, cityid FROM $t_ads
WHERE UNIX_TIMESTAMP(createdon) <= '".$improve_date."'
AND toplist = '0'
GROUP BY email
HAVING tot <= '".$numero_email."'";
[/php]
Prendi la query mostrata sullo schermo e la fai eseguire da phpmyadmin, e vedi se restituisce un errore o un insieme vuoto.
-
@Thedarkita said:
[...]
OK.
Se vuoi posso girati la pagine con il codice, e anche la tabella in questione, magari troviamo una soluzione a questo dilemma.
Intanto grazie, ci sentiamo pomeriggio, fammi sapere se vuoi i file
-
$sql = "SELECT adid, adtitle, COUNT(email) AS tot, email, code, cityid FROM $t_ads
WHERE UNIX_TIMESTAMP(createdon) <= '".$improve_date."'
AND toplist = '0'
GROUP BY email
HAVING tot <= '".$below_multipost."'";Ho provato nuovamente, ma sembra, non escludere quei risultati non richiesti, nel senso che mi da sempre dei risultati, nonostante imposti la variabile $below_multipost con valori maggiori e minori.
-
Ora funziona tutto correttamente, il problema stava nel < >, grazie per avermi risolto il problema.
A buon rendere