Autor | Zpráva | ||
---|---|---|---|
Ameopro Profil |
#1 · Zasláno: 19. 9. 2014, 21:18:53
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 |
#2 · Zasláno: 19. 9. 2014, 21:23:39
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 |
#3 · Zasláno: 19. 9. 2014, 21:53:12
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 |
#4 · Zasláno: 19. 9. 2014, 22:01:34
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 |
#5 · Zasláno: 19. 9. 2014, 22:12:04
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 |
#7 · Zasláno: 20. 9. 2014, 10:49:05
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 |
#9 · Zasláno: 20. 9. 2014, 16:52:57
|
||
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 |
#11 · Zasláno: 20. 9. 2014, 17:18:07
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 |
#12 · Zasláno: 20. 9. 2014, 18:35:34
a neměl by jsi nějaký příklad proím tě jak by jsi to udělal ty děkuji
|
||
Joker Profil |
#13 · Zasláno: 20. 9. 2014, 20:07:35
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 |
#14 · Zasláno: 20. 9. 2014, 20:44:43
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 |
#16 · Zasláno: 20. 9. 2014, 21:13:20
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 |
#18 · Zasláno: 20. 9. 2014, 21:31:38
Ameopro:
„Nebot potřebuji jen aby mazal čísla kde jich je více než 9“ Nepsals "nebo přesahly limit 8 číslic"? |
||
Ameopro Profil |
#19 · Zasláno: 20. 9. 2014, 21:39:06
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 |
#20 · Zasláno: 20. 9. 2014, 23:09:17
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 |
#21 · Zasláno: 20. 9. 2014, 23:26:04
|
||
Časová prodleva: 3 dny
|
|||
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 |
||
Časová prodleva: 3 dny
|
|||
Ameopro Profil |
#23 · Zasláno: 26. 9. 2014, 11:53:15
Chápu to dobře tedy ???
|
||
juriad Profil |
#24 · Zasláno: 26. 9. 2014, 12:06:11
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 |
#25 · Zasláno: 26. 9. 2014, 12:41:16
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 |
#27 · Zasláno: 26. 9. 2014, 13:06:33
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,}$' |
||
Časová prodleva: 10 let
|
0