Autor Zpráva
Ameopro
Profil
Ahojte prosím vás jde udělat aby se db skontrolovala a vymazala čísla ktere jsou but stejne nebo přesahly limit 8 číslic ?

například : v db je 3x 1785544 a tak aby zustal jen 1 a ne 3 nebo když přesahne 8 číslic tak to vymaže děkuji
lionel messi
Profil
Ameopro:
vymazala čísla ktere jsou but stejne
Některé časteji řešené dotazy pro MySQL - FAQ » Nalezení duplicit

Některé časteji řešené dotazy pro MySQL - FAQ » Odstranění duplicit
Ameopro
Profil
Díky moc a provede to teda že skontroluje celou db a pokud tam je více stejnícg čísel tak vymaže všechny navíc a nechá pouze jeden jo ?
dále taky vymaže čísla ktere neobsahuji 8 šísel nebo přesahují pokud maji vice čísel ??
lionel messi
Profil
Ameopro:
dále taky vymaže čísla ktere neobsahuji 8 šísel nebo přesahují pokud maji vice čísel ??
Nie, odpovedal som iba na prvú časť otázky ohľadne odstránenia duplicít. Na vymazanie číselných záznamov nad 8 číslic si netrúfam, nie som až taký SQL expert.
mimochodec
Profil
Ameopro:
když přesahne 8 číslic tak to vymaže

dále taky vymaže čísla ktere neobsahuji 8 šísel nebo přesahují pokud maji vice čísel ??

Začni tím, že přesně popíšeš, co vlastně chceš. Mazání je DELETE, podmínka je WHERE, k porovnání čísel lze použít běžné operátory < a >, známé asi z třetí třídy ZŠ. Jestli chceš mít jistotu, navrhni nějaký vlastní postup a zeptej se, jestli je správný.
pcmanik
Profil
Ameopro:
DELETE FROM tabulka WHERE stlpec >= 100000000

Zmaže všetky čísla ktoré majú 9 a viac číslic, za predpokladu že je stĺpec správneho typu.
Keeehi
Profil
A napadla tě už možnost tam ty duplicity vůbec nedávat? Pokud máš k databázi přístup jen ty, a není k tomu nějaký extra důvod, tak proč tam ty hodnoty předně vkládáš?
Ameopro
Profil
Takto v tabulce mám třeba 3x šílo 77777777, 77777777 , 77777777 a potřebuju aby script udělal delete jen u 2 ten 1 my tam nechal . nebot kdy bych udělal že se rovnaly tak vymaže všechny
Joker
Profil
Ameopro [#8]:
Viz [#2] lionel messi.
Ameopro
Profil
Tady jsem udělal ten menší soubor ale mám problém když ho zapnu tak my smaže všechna čísla z db¨ řeknete my prosím kde mám chybu děkuji vám

<?php
require_once dirname (__FILE__)."configure.php";
$sql = mysql_resource(mysql_query("DELETE FROM cislo WHERE cisla <= 9"));
if($sql)
{
echo "VŠECHNA ČÍSLA VĚTŠÍ NEŽ 9 BYLA SMAZÁNA !";
}
else
{
echo "NASTALA CHYBA OPAKUJTE POZDEJI !";
}
?>

<form action="" method="POST">
<input type="submit" name="cisla">
</form>
Joker
Profil
Ameopro:
Nemělo by to smazat všechny, ale ty, kde hodnota sloupce cisla je menší nebo rovna 9. Přestože ta hláška tvrdí, že se smažou větší než 9.

Krom toho by ten kód měl vždycky skončit hláškou „NASTALA CHYBA OPAKUJTE POZDEJI !“ a pravděpodobně i generovat chybovou hlášku, protože vstup do funkce mysql_result má být typu resource a mysql_query pro DELETE dotaz nevrací resource, ale boolean (true nebo false).
Ameopro
Profil
a neměl by jsi nějaký příklad proím tě jak by jsi to udělal ty děkuji
Joker
Profil
Ameopro:
Když se z toho v [#10] vyhodí to mysql_result, asi to bude víceméně fungovat (smaže to čísla <= 9).

Ještě poznámka, jestli ten sloupec cisla je typu řetězec, záznamy které nezačínají číslicí se konvertují na nulu, takže podmínka <= 9 smaže i je.
Ameopro
Profil
takže takto to bude fungovat ? že vymaže pouze čísla ktere maji více než 9 čísel ???

<?php
require_once dirname (__FILE__)."configure.php";
$sql = mysql_resource(mysql_query("DELETE FROM cislo WHERE cisla <= 9"));
if($sql)
{
echo "VŠECHNA ČÍSLA VĚTŠÍ NEŽ 9 BYLA SMAZÁNA !";
}
else
{
echo "NASTALA CHYBA OPAKUJTE POZDEJI !";
}
?>

<form action="" method="POST">
<input type="submit" name="cisla">
</form>
Joker
Profil
Ameopro:
že vymaže pouze čísla ktere maji více než 9 čísel
Ne. Vymaže to čísla, která jsou menší nebo rovná 9. Tj. 9, 8, 7, 6, a tak dále.

Čísla s 9 a více číslicemi přece nejsou větší nebo rovná 9, ale větší nebo rovná 100 000 000.
Ameopro
Profil
Takže když dám jenom 100.000.000 tak to vymaže jen čísla s přesahem 9 číslic ?

Nebot potřebuji jen aby mazal čísla kde jich je více než 9
Alphard
Profil
Mohu se zeptat, čím jsou výjimečná čísla, která mají víc než 9 číslic? Ona se totiž nabízí otázka, jestli je vůbec rozumné ukládat je jako čísla.
Mimochodem, když už, zapsal bych tu konstantu jako 10^9, výsledné číslo vypadá moc magicky.
mimochodec
Profil
Ameopro:
Nebot potřebuji jen aby mazal čísla kde jich je více než 9

Nepsals "nebo přesahly limit 8 číslic"?
Ameopro
Profil
ano to psal za to se omlouvám ale at tam je 8 nebo 9 tak to dělá pořád ten samý ukon
Joker
Profil
Alphard:
Mimochodem, když už, zapsal bych tu konstantu jako 10^9, výsledné číslo vypadá moc magicky.
To je ale deset číslic, devět číslic je 10^8 (jednička a osm nul = 9 číslic), čímž se ten zápis stává trochu matoucí.
Alphard
Profil
Joker [#20]:
Co přesně je matoucí? V [#16] je „mazal čísla kde jich je více než 9“, takže mazat od 10 (včetně) výše, k tomuto je ta rada korektní, ne?
A i kdyby to mělo být 10^8, pořád se mi to zdá lepší zápis 1e8 než 100000000. Kdo má tu hromadu nul číst? Vždyť to není normální.
Ameopro
Profil
Alphard:
Prosím tě takže když dám :

$vstup = resource(mysql_query("DELETE FROM cislo WHERE cisla 10^8"));

tak bude mazat čísla přesahující 9 ale i čísla které se = 8 nebo jsou meněí je to tak ?? děkuji
Ameopro
Profil
Chápu to dobře tedy ???
juriad
Profil
Ameopro:
Jako u blbých. Takže ještě jednou.

cisla musíš porovnávat s konstantou, musíš tedy použít nějaký porovnávací operátor: větší, menší, rovno, větší nebo rovno, menší nebo rovno, nerovno.
Ta stříška, kterou tu všichni používají na umocňování, třeba 10^8, je zde uváděna jen pro přehlednost. Takto nelze zapsat konstantu.
Můžeš ji ale zapsat v engeneering formátu - 1e8; obecně XeY znamená (X * 10^Y). Málo kdo tento formát používá, ale je tak možné zapsat konstantu skoro v každém programovacím jazyku.

Teď k délce, začneme polehoučku.
Jak poznáš, že číslo má jednu číslici? Jeho hodnota je mezi 0 a 9.
Jak poznáš, že číslo má nejvýše dvě číslice? Jeho hodnota je mezi 0 a 99. To lze zapsat jako cislo <= 99 nebo také cislo < 100.
Jak poznáš, že číslo má více než dvě číslice? Jeho hodnota je větší nebo rovna 100. To lze zapsat jako cislo >= 100.
Jak poznáš, že číšlo má více než osm číslic? Jeho hodnota je větší nebo rovna 100 000 000. To lze zapsat jako cislo >= 1e8.
Ameopro
Profil
juriad:
A nevíš eště jak udělat aby script skontroloval db a aby tam nebyly stejné čísla případě že jich tam je více tak aby nechal pouze 1 ???
juriad
Profil
kontrola db #2
Rozmysli si, jak roznáš od duplicit ten jeden záznam, který chceš ponechat.
Kajman
Profil
Ameopro:
Až si osvojíte počítání číslic u kladných čísel, můžete si přidat i záporná, tam to bude obdobné.

Ale ta porovnání budou funkční jen, pokud máte čísla uložená jako čísla. Pokud tam třeba ukládáte telefonní čísla např. i s mezerami a sloupeček máte varchar, lze vyledávat řetězec s alespoň osmi číslicemi takto
where sloupec regexp '^[^0-9]*([0-9][^0-9]*){8,}$'

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0