Valori doppi nel LIMIT

  • Creatore Discussione Creatore Discussione Monital
  • Data di inizio Data di inizio

Monital

Utente Attivo
15 Apr 2009
778
2
18
Ho un piccolo problema che da stamattina ho cercato di aggirare in tutt el maniere ma senza successo

effettuo una query con limit

PHP:
SELECT * FROM Tabella where campo='' order by nome DESC LIMIT 50
//faccio l'operaiozne e riuppo il campo

UPDATE tabella SET Campo=$valore.



ora ne ho diverse diq ueste select. e capita(personalmente 4 volte) che la riga 50 e la riga 51 siano valori identici(li ho protati fino la 12° cifra :hammer: decimale niente da fare. da li inziia a saltare los cript
quindi quandoavasdo a fare la select successiva ripartendo da 0
PHP:
SELECT * FROM Tabella where campo='' order by nome DESC LIMIT 50

etc.

Dato che ho posto delle condizioni con vari cicli quando si trova che si accavvalano tra due limit due o + valori identici incomincia a sfasarmi tutto

C0' maniera di far capire a sto pirla di script che se trova valori identici che gli fanno sforare i 50 prende anche quello?

Le select che ho messo sono un esempio, los cript è un pò complesso cmq ho fatto milioni di prove ed è quello l'errore che fa.

La cosa curiosa e che ho verificato più volte che nella prima select il campo della riga 50 viene uppato quindi nella seconda select non dovrebbe prenderla datoc he ripongo la condizione WHERE Campo='' però niente la riprende e la sovrascrive facendomi saltare la tabella

Avevo anche pensato di aggirare l'ostacolo facendo una select richiamando i vari doppioni e modificandeno uno ma ..........appunto........lo avevo pensato...........ed a dir il vero loa vevo anche cercato ma na cosa è pensarlo e na cosa e farlo :rolleyes:
 
ciao
scusa, sarò gnocco, ma secondo me non ti sei spegato molto bene

penso valga + la seconda ;)

praticamente cerco di essere pù concreto

Esempio

id|campox|valore
1||90.20
2||89.50
3||89.47
4||88.50
5||88.20
6||88.20

7||87.20
8||85.30
9||84.30
10||82.26

il campox al momento è vuoto
quando faccio la query
PHP:
SELECT * from tabella where campox='' Order by valore DESC LIMIT 5
.........

$valore=$riga['valore'];

mi seleziona da id 1 a id 5 correttaemnte

poi faccio

PHP:
UPDATE tabella SET campox='Bravo' WHERe valore IN($valore);

e la tabella ridiventa

id|campox|valore
1|Bravo|90.20
2|Bravo|89.50
3|Bravo|89.47
4|Bravo|88.50
5|Bravo|88.20
6||88.20

7||87.20
8||85.30
9||84.30
10||82.26

vado al passo successivo ripetendo la query

PHP:
SELECT * from tabella where campox='' Order by valore DESC LIMIT 5
//ora in realtà dovrebbe ripartire dall'id 6 invece riparte dall'id 5 

$valore=$riga['valore'];

qua 'penso mi faccia l'errore riprendomi il numero 5 però è strano perchè ho messo la clausola WHERE campox=''

credo sia più chiaro
 
trovato era un errore nel'update effettivamente era strano st'errore

resta un problema però quando faccio LIMIT 5

se la 6 riga ha valore identico alla 5 non me la prende ovviamente

e non ho proprio idea come fargli fare un apsso in + per fverificare che la successiva non sia uguale all'ultima che deve prendere ed in caso positivo aggiungere un altra condizione
 
ciao
per caso usi il codice fatto (circa) così?
PHP:
<?php
//....
$q=mysql_query("SELECT * from tabella where campox='' Order by valore DESC LIMIT 5");
while($riga=mysql_fetch_array($q)){
	$valore=$riga['valore'];
	$ris=mysql_query("UPDATE tabella SET campox='Bravo' WHERE valore IN($valore)");
}
//....
?>
se simile io proverei a fare in questo modo cioè mettendo anche la condizione che il campox sia vuoto
PHP:
<?php
//....
$q=mysql_query("SELECT * from tabella where campox='' Order by valore DESC LIMIT 5");
while($riga=mysql_fetch_array($q)){
	$valore=$riga['valore'];
	$ris=mysql_query("UPDATE tabella SET campox='Bravo' WHERE valore IN($valore) AND campox=''");
}
//....
?>
oppure prelevando anche gli id
PHP:
<?php
//....
$q=mysql_query("SELECT * from tabella where campox='' Order by valore DESC LIMIT 5");
while($riga=mysql_fetch_array($q)){
	$id=['id'];
	$valore=$riga['valore'];
	$ris=mysql_query("UPDATE tabella SET campox='Bravo' WHERE valore IN($valore) AND id=$id");
}
//....
?>
prova, al massimo non funzia
 

Discussioni simili