Keresés

Részletes keresés

digicat Creative Commons License 2009.06.22 0 0 1738
Milyen alkalmazás, hogy a BIGINT nem elég nagy?

A limit-tel kapcsolatban még nem lett konkrétan leírva, hogy az order by azért kell mert anélkül a rekordok sorrendje nem garantált. A rögzítés sorrendjét felejtsd el, szerintem a MySQL is végez néha karbantartást a fájlokban és olyankor könnyen előre kerülhet egy újabban rögzített rekord egy törölt helyére.
Előzmény: zozomax (1734)
zozomax Creative Commons License 2009.06.22 0 0 1737

Azért akarok limitet, mert esetenként sokezer rekord is lehet az eredmény (amit a helyi gépen feldolgozok és letárolok más formátumba későbbi offline munkához) és nem akarom egyszerre áthúzgálni a kapcsolaton, hanem beállított adagonként, ciklusban...

 

 Ez volna az értelme... Másképp kellene azt csinálnom ?

 

Innen néztem ki amúgy :
http://dev.mysql.com/doc/refman/4.1/en/select.html  vannak példák limitre order nélkül...

Előzmény: crockl (1735)
NevemTeve Creative Commons License 2009.06.22 0 0 1736
> Miért, az kötelező a limithez?

Nem, dehogy kötelező, miért is lenne? Egyszerűen csak értelmetlen a LIMIT, ha nincs rendezés.
Előzmény: zozomax (1732)
crockl Creative Commons License 2009.06.22 0 0 1735
ha nem akarod sorbarendezni valami szerint akkor miert akarsz limit-et? Azaz MIRE akarsz limitet? Mert egy rendezetlen halmazra limit-et mondani, ugy hogy neked nem random kellenek a rekordok eleg butasag.
Előzmény: zozomax (1732)
zozomax Creative Commons License 2009.06.22 0 0 1734

Igen, a kod mezőt is belevéve a where-be kiadja limittel meg anélkül is rendesen.

Én csak egész számokat írok a double mezőbe, csak azért double hogy a lehető legnagyobb  számok is beleférjenek. Gondolom megváltozni nem tud nem igaz?

Előzmény: zizi (1731)
zozomax Creative Commons License 2009.06.22 0 0 1733

Be majom vok, a
 ORDER BY tolt LIMIT 0,500  is jó csak oda kell nekem egy desc is hogy lássam...

 

Szóval akkor az ORDER BY mindenképpen kell hozzá? ... Tényleg nem vettem észre hogy csak együtt használható a kettő .  

Előzmény: zozomax (1732)
zozomax Creative Commons License 2009.06.22 0 0 1732

Miért az kötelező a limithez? Én nem vettem észre hogy kötelező volna, mondjuk nem olvastam el minden betűjét a doksinak...


De  mondjuk ahogy mondod kipróbáltam és ha

 

SELECT * FROM rendelo WHERE tolt>200 ORDER BY nev LIMIT 0,500 

 

akkor tényleg működik.

 

Ellenben pl. a

 SELECT * FROM rendelo WHERE tolt>200 ORDER BY tolt LIMIT 0,500 

az ORDER BY ellenére sem jó.

 

Most akkor én töketlenkedek csak ? Igazából nem akarnám sorba tenni semmi szerint, de akár tehetem is ha az a lényeg.... 


 

Előzmény: NevemTeve (1729)
zizi Creative Commons License 2009.06.22 0 0 1731
ha kiadsz egy ilyet:
SELECT * FROM rendelo WHERE kod='XX' AND tolt > 200, ahol XX egyenló az ominózus sor egyedi kulcsával, akkor visszakapod a sort?

amúgy biztosan 200 van benne? mert a double miatt, ha pl. 199.9999999999999999999999999999999999999999 van benne, akkor simán 200-at látsz, de azért az valójában kisebb 200-nál
Előzmény: zozomax (1728)
zozomax Creative Commons License 2009.06.22 0 0 1730

Közben tovább is próbáltam a dolgot..
Más táblán is tudom reprodukálni a dolgot, de úgy látom hogy csak akkor jelentkezik a hiba, ha a feltételes LIMIT 0,500 első eredménysora egyben a tábla legelső sora is...
Ha már a második rekord lenne az első eredménysor, akkor jól működik a feltételes limit 0,500 is... érdekes.

 

Előzmény: digicat (1727)
NevemTeve Creative Commons License 2009.06.22 0 0 1729
Csak én nem látom ebben az 'ORDER BY'-t?
Előzmény: zozomax (1728)
zozomax Creative Commons License 2009.06.22 0 0 1728

Mondjuk hasonló a tábla :

 
CREATE TABLE `rendelo` (
  `kod` char(27) NOT NULL default '',
  `nev` char(30) NOT NULL default '',
  `szulido` date NOT NULL default '0000-00-00',
  `tolt` double NOT NULL default '0',
  `seged` char(3) NOT NULL default '.F.',
  PRIMARY KEY  (`kod`),
  KEY `tolt` (`tolt`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1

 

Az enyémben több mező és 55000 sor van, a tolt mezőkben valamekkora számok vannak.

Aztán ODBC-n keresztül megy: 

SELECT * FROM rendelo WHERE tolt>200 LIMIT 0,500 
(itt a legelső eredmény sor, ami véletlenül egyben a tábla legelső sora is, lemarad )

 

 SELECT * FROM rendelo WHERE tolt>200 LIMIT 500,1000  
(ez már jó, megvan mind a következő 500 sor...)

 

Ha az első így megy where nélkül:

 
SELECT * FROM rendelo LIMIT 500

 

akkor benne van a kérdéses legelső rekord is és látszik, hogy a tolt mező nagyobb mint 200 egyébként...

Nem az ODBC a hibás , SQLYOG ablakban is ezt a adja, mint ahogy a programban ODBC-n keresztül is...

Előzmény: digicat (1727)
digicat Creative Commons License 2009.06.22 0 0 1727
Ha adsz egy példát kipróbálom a szerveremen.
Előzmény: zozomax (1726)
zozomax Creative Commons License 2009.06.21 0 0 1726

Sajnos nem néztem el...
Utánanéztem közben a mysql.com on is és másnak is előjött már ez a probléma, de nem láttam egyik új verzió leírásánál sem hogy megoldották volna.
Én úgy vettem észre, hogy akkor marad el a legelső sor a limit 0,500 -ban, ha a where feltételben szerepel egy bizonyos indexelt mező.

 

Ha nem szűrök arra a mezőre, akkor a limit is jól működik. Az indexeléssel lehet valami gond, én megoldottam a problémát egy két plusz sorral, nem törtem rajta a fejem tovább.( Az index újra létrehozása nem segített)

Előzmény: digicat (1724)
zizi Creative Commons License 2009.06.21 0 0 1725
Ha LIMIT 0,500 ugyanazt adja, mint a LIMIT 500, akkor 1.), ha nem, akkor 2.)
vagy 3.) :-)
Előzmény: digicat (1724)
digicat Creative Commons License 2009.06.21 0 0 1724
5.0.79-en jól működik.

Két lehetőség van:
1) Elnéztél valamit.
2) Bug van a 4.1-ben.
Előzmény: zozomax (1723)
zozomax Creative Commons License 2009.06.21 0 0 1723

Sziasztok,

 

Most ütköztem egy gondba, ha valaki tud rá megoldást kérem írja meg...

 

Szóval sima SELECT parancsot futtatok LIMIT megadással és a legelső sort  (csak a  LIMIT 0,500  nál) lehagyja.

A többi (LIMIT 500,1000 majd 1000,1500 stb...)  már úgy látom jó. .

 

4.1 server fut. Van valakinek megoldása erre?

 

tagore72 Creative Commons License 2009.04.30 0 0 1722
Sziasztok!

Más forrásból megtudtam (még nem próbáltam ki):

load data infile '/var/www/meo/meoterm.txt'
into table termek
fields terminated by ' ' optionally enclosed by '"'
ignore 1 lines
(@a,@b,@c,@d,@e,@f,@g,@h,@i,@j,@k,@l,@m,@n,@o,@p,@q,@r,@s)
set gyartott_mennyiseg=replace(@i,',','.');

Joe
Előzmény: tagore72 (1720)
locsemege Creative Commons License 2009.04.30 0 0 1721
Ha tr-rel vagy sed-del lecserélnéd előbb a vesszőket pontra?

sed 's/\([0-9]\+\),\([0-9]*\)/\1.\2/g' <<<'alma, körte, 123,45, 16,, szilva, 48'
alma, körte, 123.45, 16., szilva, 48

Ez a favágó módszer, gondolom, valahol lehet nyelvi beállításokat is eszközölni.
Előzmény: tagore72 (1720)
tagore72 Creative Commons License 2009.04.29 0 0 1720
Sziasztok!

Kérdésem:

Egy textfájlból szeretnék adatokat importálni, de a fájlban a tizedesjel vessző (pl. 1234,15) A MySql import (Load data infile) viszont úgy működik jól, ha a jel pont (1234.15). Hogyan tudnám importkor megadni neki, hogy a vessző a tizdesjel? Sajnos a textfájl fix formátumú.

Köszönöm.

Joe
NevemTeve Creative Commons License 2009.04.21 0 0 1719
A gombot HTML-ben kell csinálni (kliensoldalon), az adatbázisműveletet PHP-ban (szerveroldalon).
mysql_query
Előzmény: Adam1066 (1717)
dj Creative Commons License 2009.04.21 0 0 1718
Az SQL problémádat megoldották, fáradj át a php topikba ( programozás )
Előzmény: Adam1066 (1717)
Adam1066 Creative Commons License 2009.04.21 0 0 1717
php-t és mysql-t használok. az oké hogy a gombot hogyan kell, de a 2000 hozzáadása mysql-hoz más nem?
crockl Creative Commons License 2009.04.21 0 0 1716
irsz egy grafikus programot, amibe teszel 1 gombot ami updateli az adatbazisban a mezot :) Kb igy.
Előzmény: Adam1066 (1706)
digicat Creative Commons License 2009.04.21 0 0 1715
Csak nem Access-ből érkezel?
Ott sem szabad összemosni az adatbázist a felhasználói felülettel. Az adatbázis SQL-ül tud (NevemTeve megírta a választ), a felhasználói felület pedig SQL parancsokat küld az adatbázisnak.
Előzmény: Adam1066 (1713)
NevemTeve Creative Commons License 2009.04.21 0 0 1714
Valamilyen programozási nyelvet és/vagy alkalmazásfejlszetési környezetet kellene használnod... Mittomén Java, C, Perl/Tk, stb (esetleg phpMyAdmin?)
Előzmény: Adam1066 (1711)
Adam1066 Creative Commons License 2009.04.21 0 0 1713
bocs-bocs sql-t írtam... mysql-t akartam.
locsemege Creative Commons License 2009.04.21 0 0 1712
Az SQL szervernek úgy tudom, command line interface-e van. Meg gondolom, programozói is, tehát ha írsz C-ben egy GTK vagy QT felületű programot, megfelelő függvények hívásával vélhetően tudod ingerelni az SQL szervert. De egy SQL szerverben nincs semmilyen gomb.
Előzmény: Adam1066 (1711)
Adam1066 Creative Commons License 2009.04.21 0 0 1711
hogy egy gomb jelenik meg, és ha arra rákattintok akkor növelődik az a szám
locsemege Creative Commons License 2009.04.21 0 0 1710
Gombbal? Egymás után lenyomod azokat a gombokat, amelyen az illető betű van feltüntetve, a végén pedig enter. Vagy mit nem értek?
Előzmény: Adam1066 (1709)
Adam1066 Creative Commons License 2009.04.21 0 0 1709
Ahogy én próbáltam nem igen jött össze.... :(
gombbal hogyan lehet?

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!