Hirdetés

2024. május 10., péntek

Gyorskeresés

Útvonal

Fórumok  »  Szoftverfejlesztés  »  MySQL topic

Hozzászólások

(#951) Peter Kiss válasza Lacces (#943) üzenetére


Peter Kiss
senior tag
LOGOUT blog

1. Tranzakció rollback volt.
2. Aki inkább több SELECT-et használ, az hülye. :U

(#952) martonx válasza Peter Kiss (#951) üzenetére


martonx
veterán

megelőztél, tökéletesen egyetértek.
A több select használata, és az azokból szerver oldalon eredmény összeidétlenkedése tipikus SQL-ezni nem tudó programozói attitűd. Ezek nem hogy gyorsítanak, de brutálisan lassíthatják az adatfeldolgozást.

Én kérek elnézést!

(#953) Lacces


Lacces
őstag

Aha, köszönöm a válaszokat. Csak számomra mindig olyan érdekes, hogy rám szólnak, hogy bontsam szét selectre, és ne Joinoljak. Ezért is tettem fel a kérdést, mert ez számomra furcsa volt itt. És néha van egy olyan érzésem, hogy rossz szokásokat vernek belém.
Meg szerintem a Join esetében kevesebb szerver oldali kódot kell írni.
Vannak még itt furcsaságok... külső kulcs használata is ritka, normálfomákkal is alig találkozom.

Aham a tranzakció rollback... Most ahogy néztem a folyamatot nekem is ilyen tűnt fel.

NoSQL számomra mindig is érdekes téma volt, mindig minden félét olvasok róluk. Nem sértődtem meg nagyúr :). Jahm, most legalább rádöbbentem, hogy mennyi hiányoságom van még ilyen téren. És a saját webes projekteknél jobban össze kell kapnom magam :). :R

(#954) Sk8erPeter válasza Lacces (#953) üzenetére


Sk8erPeter
nagyúr

"Csak számomra mindig olyan érdekes, hogy rám szólnak, hogy bontsam szét selectre, és ne Joinoljak"
Ki szól rád? A munkahelyeden ilyen okos emberek dolgoznak? :)

Sk8erPeter

(#955) Speeedfire válasza Sk8erPeter (#954) üzenetére


Speeedfire
nagyúr

Bezzeg ha te lennél a munkatársa... ;]

Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com

(#956) martonx válasza Lacces (#953) üzenetére


martonx
veterán

Sürgősen kezdj el rendes munkahelyet keresni, ahol szakértő programozók dolgoznak, nem pedig kontárok.

Én kérek elnézést!

(#957) Sk8erPeter válasza Speeedfire (#955) üzenetére


Sk8erPeter
nagyúr

:U

Sk8erPeter

(#958) Speeedfire


Speeedfire
nagyúr

Úgy néz ki elfelejtek mindent...
Itt ezt nem értem, hogy mi van vele. Amikor az offsetet átállítom 15-re, akkor a 18,19-es id-jú sorok nincsenek ott. Miért? :F
Illetve más offset értékekkel is igen furcsa dolgokat ad vissza.

Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com

(#959) Peter Kiss válasza Speeedfire (#958) üzenetére


Peter Kiss
senior tag
LOGOUT blog

Teljesen jól működik, amennyire látom.

(#960) PazsitZ válasza Speeedfire (#958) üzenetére


PazsitZ
addikt

A LIMIT a leszűrt, kapott adathalmazra vonatkozik.
Így a 11, 12, 13, 18, 19 id-val ellátott sorok, amíg megjelennek LIMIT 10, 50 -nél, addig az említett 5 sor nem LIMIT 15, 50 -nél. Nem értem mi a probléma.

Ha 15-ös id feletti sorokat akarsz megkapni, akkor ugye a WHERE-ben kell megadnod, az id >15 feltételt.

Ígyál egy kávét, tolj egy minesweepert és fuss neki újra ;)

(#961) Speeedfire:
A limittel lehet játszani, csak nem azt, amire itt most szerintem gondolsz. :)
Egyenletes, "szünetmentes" id sor esetén lenne esetileg igaz, amire gondolsz.

De ha bővebben kifejted, mi a cél lehet többet tudunk segíteni.

[ Szerkesztve ]

- http://pazsitz.hu -

(#961) Speeedfire válasza Peter Kiss (#959) üzenetére


Speeedfire
nagyúr

A 2. képen miért nem jeleníti meg a 18,19-es id-jú sorokat?
Illetve ha a limit 20, 50 akkor pedig a 25. id-val rendelkező az első nála.

Ennyire rövid az agyam, hogy nem jól emlékszem a limitre? :F
Az első paraméter a kezdő érték, a második pedig, hogy az elsőtől kezdve mennyi rekordot jelenítsem meg. Vagy nem? :U


PazsitZ: Hát akkor marad a where. Bár nekem tényleg úgy rémlik, hogy a limit-tel is lehet így játszani. :B

[ Szerkesztve ]

Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com

(#962) Peter Kiss válasza Speeedfire (#961) üzenetére


Peter Kiss
senior tag
LOGOUT blog

Első kép:
Kihagy 10-et;
Látszik: 11, 12, 13, 18, 19 és fölötte;

Második:
Kihagy 15-öt;
Látszik: 20 vagy fölötte; (15-10 => 5 darab, ami: 11, 12, 13, 18, 19)

[ Szerkesztve ]

(#963) Speeedfire válasza Peter Kiss (#962) üzenetére


Speeedfire
nagyúr

Oh, hogy az a. Valóban, most esett le, amit PazsitZ írt, hogy a leszűrt halmaz.
Köszi srácok. :R
Úgy látszik késő van már nekem...

[ Szerkesztve ]

Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com

(#964) syC


syC
addikt

Sziasztok!

Egy kis segitség kellene. Bizotsan hibás a szintaktikám, valaki átnézné?

CREATE TRIGGER teszt_trigger1
after insert ON hirdetesek
FOR EACH ROW BEGIN

IF new.ccm=0 and new.nev like '% _._ %' -- Ha ccm értéke 0 és a nev sztringben van olyan 3 karakteres sztring aminek a 2. karaktere pont

SET @ccm=SUBSTRING(new.nev,LOCATE(new.nev,'.')-1 for 3); --@ccm változóba másold be

IF (IsNumeric(@ccm[0]) and IsNumeric(@ccm[2])) --ha a @ccm változó első és harmadik karaktere szám

INSERT INTO tr_teszt (ccm) VALUES(new.keres_azon,CAST(@ccm as FLOAT)*1000,'0','0'); -- illeszd be a tr_teszt.ccm cellába, floatként ezres szorzóval ( tehát 1.8 -> 1800 )

END IF;

END IF;

END;

Köszi

(#965) syC válasza syC (#964) üzenetére


syC
addikt

Delimiter ...

Mentségemre legyen mondva, hogy a phpmyadmin hibát dob deklaráláskor, de valójában elfogadja a triggert. :F

(#966) martonx válasza syC (#965) üzenetére


martonx
veterán

Párszor már jeleztem itt, hogy a PHPMyAdmin hanyagolandó komolyabb SQL-ezéskor.

Én kérek elnézést!

(#967) Sk8erPeter válasza martonx (#966) üzenetére


Sk8erPeter
nagyúr

Hát nem tudom. Sajnos az általad ajánlott Toad for MySQL sem jobb az én tapasztalataim alapján. :( Nem biztos, hogy a phpMyAdmin okolható az általa tapasztalt probléma miatt (pl. arról nem esett egy szó sem, hogy kipróbálta-e simán, konzolról).

[ Szerkesztve ]

Sk8erPeter

(#968) Peter Kiss


Peter Kiss
senior tag
LOGOUT blog

http://www.sitepoint.com/dbninja-mysql-client/ - egy próbát talán megér.

(#969) lakisoft válasza Sk8erPeter (#967) üzenetére


lakisoft
veterán

És mi a helyzet a MySQL Wordbench-el? Nekem ez tökéletesen bevált, eddig.

(#970) Speeedfire válasza lakisoft (#969) üzenetére


Speeedfire
nagyúr

Nekem is, nem értem miért nem ajánlja senki sem. :(

Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com

(#971) martonx válasza lakisoft (#969) üzenetére


martonx
veterán

Legközelebb ha komolyabban MySQL-eznem kell, majd kipróbálom. Mondjuk én a toad for mysql-el elégedett voltam, de mindig nyitott vagyok a jobbításra.

Én kérek elnézést!

(#972) Sk8erPeter válasza Peter Kiss (#968) üzenetére


Sk8erPeter
nagyúr

Köszi az ajánlást, ezt kipróbáltam, és tényleg meglepően gyors! Ráadásul elég modern a felülete (ahogy a cikkben is kiemelik), egész kényelmes és intuitív a kezelése.
Ami engem zavar, és elég gyorsan feltűnt, az első pár perc tesztelgetés után:
1.) táblákra kétszer rákattintva először a struktúráját mutatja, ami még önmagában nem lenne gáz, de magához a tartalmához viszont kénytelen vagyok az SQL Management Studio-hoz hasonlóan rákattintani jobb gombbal, majd Use in Query menüben kiválasztani a Selectet. Pedig tesztelésnél van, hogy inkább azt szeretném megnézni, hogy mi a táblák tartalma, a struktúráját meg alapvetően elég kevésszer módosítom.
2.) amikor az előbb említett Use in Query > Select menüpontot kiválasztom, akkor a hosszú, legörgetett táblalistában felugrik magának az adatbázisnak a nevére, igazából itt a bal oldali hasáb görgetési állapota nem tudom, miért nem tud független lenni a jobb oldalitól, miközben úgyis AJAX-szal töltődik be a tartalom, miért kell, hogy felugorjon a fókusz az adatbázis nevére. Ez nagyon zavaró tud lenni, ha ismét ugyanazon a táblán akarsz valami műveletet végezni, és már megint scrollozhatsz le a listában.
3.) a query-k összepakolásánál hiányolom azt, ami megvan phpMyAdminban: a query összeállításánál felkínált lista a mezők nevével, amire elég csak rákattintani, és bedobja a textarea-ba.

Ettől függetlenül elég ígéretes, és tényleg nagyon gyors. De azért sztem a fentiekben még fejlődnie kell, mert elég alapvető igények (nem?).
Egyébként hol tárolja az elmentett dolgait? Nem kér külön adatbázist, táblák beállítását, mint mondjuk a phpMyAdmin. localStorage-ban vagy ilyesmi?

============

(#969) lakisoft :
Már elég rég használtam, de a MySQL Wordbench a dbForge Studio for MySQL-hez képest elég sok mindenben elmaradt, sok mindent hiányoltam belőle. Most nincs előttem, nem ugrik be hirtelen, mik voltak ezek, de a query-k összepakolása a dbForge-ban iszonyat kényelmes, míg a MySQL Workbench-ben nem nagy szám, nem lehet olyan szépen összerakni komplexebbeket.
Az is hozzátartozik viszont, hogy a dbForge nem ingyenes.

[ Szerkesztve ]

Sk8erPeter

(#973) Sk8erPeter válasza Sk8erPeter (#972) üzenetére


Sk8erPeter
nagyúr

Most látom, itt az 1-es pontban lévőt félreérthetően írtam, az SQL Management Studio-ban azért annyiból is sokkal jobb a dolog, hogy van lehetőség mondjuk az első 1000 sor listázására, nem kell külön rámenni, hogy na akkor ezt a query-t futtasd. Itt meg úgy működik, hogy ráklattyolsz a Use in Query > Selectre, aztán van egy külön gomb a query futtatására. Idegesítő ez a szükséges plusz felesleges kör.

Sk8erPeter

(#974) lakisoft válasza Sk8erPeter (#972) üzenetére


lakisoft
veterán

Nyugodtan nézd meg szerintem nagyon sokat fejlődött korábbi verzióihoz képest.

(#975) Sk8erPeter válasza lakisoft (#974) üzenetére


Sk8erPeter
nagyúr

Na, megnéztem.
Nagyon kíváncsi lennék: szerinted konkrétan miben fejlődött "nagyon sokat"?
Nagyjából semmi különbséget nem láttam ahhoz képest, mint amikor legutóbb próbáltam.
Még új júzert sem lehet hozzáadni, jogait menedzselni, pedig azt még a korábban mutatott, böngészőben kezelhető DBNinjával is lehet, persze nem is beszélve a phpMyAdminról, ahol elég normálisan van ez is megoldva.
Mondjuk az tetszik, hogy ott van a táblákra jobb klikkelve a "Select Rows - Limit 1000", tehát hogy nem kell külön rányomni a query futtatására, mint a DBNinjában, de asszem ez elég alapvető elvárás. Meg a phpMyAdminban azt is be lehet állítani, hogy egy átlagos selectnél defaultból hány rekordot kérdezzen le (tök hülye számokat is be lehet állítani, pl. 37).
A rekordok szerkesztése viszont tényleg kényelmes.
Az is tetszik, ahogy pl. egy UPDATE vagy INSERT query összeállításában segít, hogy mutatja a default értékeket is: http://i.imgur.com/32k8O.png.
De mondjuk elvileg még ez is alapvető elvárás lehet egy ilyen proginál (még ha ingyenes is).
Az is jó, hogy a szintaktikai hibákat egyből jelzi az editorban - ez sem egy hű de nagy valami.
DE ami kifejezetten hiányzik, hogy én nem találtam grafikus alapú query-összeállítót, ami van a dbForge Studio for MySQL-ben - persze utóbbi nyilván többek közt ezért sem ingyenes. Habár most ugrik be, az Microsoft SQL Server 2012 Express-ben található SQL Management Studio is tök ingyenes, mégis tudja ezt... (lehet, hogy most jön a hivatkozási alap, hogy a Microsoftnak több a tőkéje)

Ami viszont szerintem alapvető elvárás, az a korábban említett user-létrehozás, meg az, hogy importálni lehessen normálisan a MySQL dumpokat, a tömörített változatokat is (.gz), mint ahogy phpMyAdminban tök egyszerűen lehet is, kb. három klikk. De itt csak olyat találtam, hogy meg lehet nyitni egy .sql-fájlt, és azt le is lehet futtatni (OK, végül is így importálhatom a rekordokat), DE a tömörített állományokat (.gz) már el sem fogadja. Hát ez mi?

Szóval én ezek miatt nem vagyok túlságosan elragadtatva a MySQL Workbench-től, mert a böngészőalapú phpMyAdmin az alapvető, elvárható funkciókból (lásd utóbbi kettő) még mindig többet tud, még ha lassabb is.

[ Szerkesztve ]

Sk8erPeter

(#976) PazsitZ válasza Sk8erPeter (#975) üzenetére


PazsitZ
addikt

user letrehozas, komplett elore konfiguralt jogosultsag szintekkel van. Szerintem korabban is volt.
Tomoritett fajl import nem tudom van-e alapbol, de nem tudom miert akkora gond ez.
A grafikus query osszeallitot meg hagyjuk mar, elhiszen, h lehet vele jot jatszani, de azon tul...

[ Szerkesztve ]

- http://pazsitz.hu -

(#977) lakisoft válasza Sk8erPeter (#975) üzenetére


lakisoft
veterán

Nem azt mondtam rá hogy tökéletes hanem hogy jól használható. :R

(#978) Sk8erPeter válasza PazsitZ (#976) üzenetére


Sk8erPeter
nagyúr

"user letrehozas, komplett elore konfiguralt jogosultsag szintekkel van. "
Hol?
Csak gyorsan végigkattintgattam, simán lehet, hogy elkerülte a figyelmemet, de én nem találtam.

"Tomoritett fajl import nem tudom van-e alapbol, de nem tudom miert akkora gond ez."
Nem értem a kérdést. Hogyhogy miért gond? Ha egy tömörített dumpot akarok importálni, akkor már hogyne lenne gond? :DDD Ha phpMyAdminban meg tudták oldani, nem igazán értem, itt miért nem. De már a felvetésedet sem igazán látom be, hogy miért ne lenne gond.

"A grafikus query osszeallitot meg hagyjuk mar, elhiszen, h lehet vele jot jatszani, de azon tul..."
Azontúl is nagyon hasznos, sokszor jóval gyorsabb, mint kézzel megírni egy rohadt komplex query-t. A gyakorlatban is vettem már hasznát pl. dbForge-nál, amikor tényleg nagyon sok táblát kellett összekapcsolni egy számtalan paramétert, beállítást összekapcsoló query-hez.
Gondolom azért mondod, hogy csak játékra jó, mert nem volt még olyan igény, amire hasznát vehetted volna. Ettől még nem kell ilyen szélsőséges kijelentést tenni, mert számolhatnál azzal is, hogy nincs igazad. Még mindig jobb egy elég jól összepakolt, rohadt nagy query-t átírni pár helyen, mint kézzel, hibákkal lepötyögni a teljeset mindenféle segítség nélkül.
Talán ha kipróbálnád egyszer... :)

(#977) lakisoft : OK. ;)

Sk8erPeter

(#979) lakisoft válasza Sk8erPeter (#978) üzenetére


lakisoft
veterán

Meg kell írni a hiányosságokat a fejlesztőcsapatnak hátha ráharapnak és megcsinálják. :K

(#980) wmati


wmati
addikt

Ezzel mit tudok kezdeni ?

SQL-lekérdezés:

CREATE TABLE `members` (

`id` INT( 4 ) NOT NULL AUTO_INCREMENT ,
`username` VARCHAR( 65 ) NOT NULL DEFAULT '',
`password` VARCHAR( 65 ) NOT NULL DEFAULT '',
PRIMARY KEY ( `id` )
) TYPE = MYISAM AUTO_INCREMENT =2;

A MySQL mondta:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TYPE=MyISAM AUTO_INCREMENT=2' at line 6

(#981) PazsitZ válasza wmati (#980) üzenetére


PazsitZ
addikt

Kezdő értéket kapásból nem tudsz adni, de utólag állíthatod:
ALTER TABLE `members` AUTO_INCREMENT = 2;

- http://pazsitz.hu -

(#982) wmati


wmati
addikt

picit egyszerűbben elmondanád? :O

[ Szerkesztve ]

(#983) PazsitZ válasza wmati (#982) üzenetére


PazsitZ
addikt

Jobban megnézve tévedtem. A TYPE helyett ENGINE kell, ez volt a hiba.
Azt meg nem is tudtam, hogy így lehet auto increment-et inicializálni. :B

CREATE TABLE `members` (
`id` INT( 4 ) NOT NULL AUTO_INCREMENT ,
`username` VARCHAR( 65 ) NOT NULL DEFAULT '',
`password` VARCHAR( 65 ) NOT NULL DEFAULT '',
PRIMARY KEY ( `id` )
) ENGINE = MYISAM AUTO_INCREMENT = 2;

[ Szerkesztve ]

- http://pazsitz.hu -

(#984) wmati válasza PazsitZ (#983) üzenetére


wmati
addikt

Már csak össze kell kötnöm php oldalakkal :((

(#985) MadarasTESCO


MadarasTESCO
csendes tag

szevasztok

kaptam egy feladatot, mert berágott a tanár amiért a csoport f@szbúkozott órán, és ennek én is megszívom a levét. ha nincs kész, vagy legalább valami próbálkozás akkor meghúz engem is mert én is a scoport tagja vok. nem értek sokat az SQL-hez, kb egy-két hete kezdtünk el foglalkozni vele. a feladat az hogy sql paranccsal mySQL-ben ki kell iratni 15000 random generált magyar típusú rendszámot, úgy hogy ne legyen két ugyanolyan. aki tudja a megoldást kérem írja le a parancsot. és magyarázza el mi micsoda. aki nem tudja a kérdésre a választ csak bele akar szólni a dologba, pl hogy miért fb-ztek órán miért nem figyeltek oda, az kérem ezeket tartsa meg magának. holnapra kéne a dolog. pls HELP. előre is köszönöm. :K

(#986) lakisoft válasza MadarasTESCO (#985) üzenetére


lakisoft
veterán

Ha valamiben elakadsz és forráskódot kell nézni abban szivesen segítek. De nem oldom meg helyetted a feladatod. :K

(#987) Sk8erPeter válasza MadarasTESCO (#985) üzenetére


Sk8erPeter
nagyúr

Most csak rohanva írok, úgyhogy csak részsegítség, de a háromjegyű szám generálása (a magyar rendszám második feléhez) elég egyszerű, lásd [link]:
"To obtain a random integer R in the range i <= R < j, use the expression FLOOR(i + RAND() * (j – i)). For example, to obtain a random integer in the range the range 7 <= R < 12, you could use the following statement:
SELECT FLOOR(7 + (RAND() * 5));
"

Szóval például:
SELECT FLOOR(100 + RAND() * (900)) AS szamok
Ezt persze még konkatenálni kéne a háromjegyű, angol ábécéből generált random stringgel, meg a kötőjellel (mármint ezek a szám elé mennek), meg 15 ezer db-ot mindebből ledarálni. Biztos a tanár meg akarta oldani, de nem sikerült neki, ezért rátok bízza a piszkos munkát. ;]

Sk8erPeter

(#988) Sk8erPeter válasza lakisoft (#986) üzenetére


Sk8erPeter
nagyúr

facepalm... bocsi, de ilyen hsz.-t minek írsz? Konkrét segítségre vágyott, ez kiderült a hozzászólásából, nem a semmire.

Sk8erPeter

(#989) Sk8erPeter válasza MadarasTESCO (#985) üzenetére


Sk8erPeter
nagyúr

A legprimitívebb, legegyszerűbb megoldás talán ez lehet egy random rendszám kidobálására:

SELECT CONCAT(
CHAR(65+MOD(ROUND(RAND()*100),26)),
CHAR(65+MOD(ROUND(RAND()*100),26)),
CHAR(65+MOD(ROUND(RAND()*100),26)),
'-',
FLOOR(100 + RAND() * (900))
) AS 'rendszam'

Sk8erPeter

(#990) MadarasTESCO válasza Sk8erPeter (#989) üzenetére


MadarasTESCO
csendes tag

kösz, kiagyaltuk már. :K

(#991) Sk8erPeter válasza MadarasTESCO (#990) üzenetére


Sk8erPeter
nagyúr

És milyen megoldást választottatok?
Amúgy üzenem a tanárnak, hogy elég rosszak a pedagógiai módszerei. ;] Szerintem ez rohadtul nem kezdőknek való feladat, és messze áll attól, ami a gyakori adatbázis-kezeléshez kell. Ezerszer értelmesebb lenne táblák megtervezésével, összekapcsolásával kapcsolatos feladatot adni...
Nagyon tud irritálni, amikor egy tanár a diákok kedvét még idejekorán elveszi az informatikától.

[ Szerkesztve ]

Sk8erPeter

(#992) laracroft


laracroft
aktív tag

Sziasztok!

Van egy lekérdezésem, amit bizonyos időközönként le kell futtatnom:

select * from NAPLO where LEIRAS like "%10-es%" and IDO between "2012-11-01" and "2012-11-25"
select * from NAPLO where LEIRAS like "%20-as%" and IDO between "2012-11-01" and "2012-11-25"

... és így tovább 100-ig.

Igazából arra vagyok kíváncsi, hogy a megadott időintervallumban hány darab ilyen esemény volt.
Ezt egyenlőre csak 10 különálló lekérdezéssel tudom megoldani.

Valahogy egyszerre szeretném lefuttatni a lekérdezést úgy, hogy ehhez hasonló eredményt kapjak:

10-es eset : 500 db
20-as eset: 4002 db
30-as eset: 102 db
...

előre is köszi!

(#993) martonx válasza laracroft (#992) üzenetére


martonx
veterán

Egy dinamikusan összerakott select-et beleraksz a while-ba, ahol 10-esével növeled a változódat

Vagy írsz egy szép nagy union-os select-et

[ Szerkesztve ]

Én kérek elnézést!

(#994) laracroft válasza martonx (#993) üzenetére


laracroft
aktív tag

Aha union!
Meglestem a helpet...

Ez jó lesz :)

köszi

(#995) Apollo17hu válasza laracroft (#992) üzenetére


Apollo17hu
őstag

Nem tudom leellenőrizni a szintaktikáját, de én így csinálnám (aposztróf kell, nem?):

SELECT t.leiras
,COUNT(*) || ' db'

FROM naplo AS t

WHERE
t.ido BETWEEN '2012-11-01' AND '2012-11-25'
AND t.leiras LIKE '%0-_s%'

GROUP BY t.leiras

vagy így, ha 100 felett még menne akár millióig, de azokra nincs szükséged:

SELECT t.leiras
,COUNT(*) || ' db'

FROM naplo AS t

WHERE
t.ido BETWEEN '2012-11-01' AND '2012-11-25'
AND (t.leiras LIKE '%10-es%'
OR t.leiras LIKE '%20-as%'
OR t.leiras LIKE '%30-as%'
OR t.leiras LIKE '%40-es%'
OR t.leiras LIKE '%50-es%'
OR t.leiras LIKE '%60-as%'
OR t.leiras LIKE '%70-es%'
OR t.leiras LIKE '%80-as%'
OR t.leiras LIKE '%90-es%'
OR t.leiras LIKE '%100-as%')

GROUP BY t.leiras

(#996) Sk8erPeter válasza Apollo17hu (#995) üzenetére


Sk8erPeter
nagyúr

"aposztróf kell, nem?"
Alapértelmezésben tök mindegy, ez MySQL.
http://dev.mysql.com/doc/refman/5.0/en/string-literals.html

(#992) laracroft :
"egyenlőre" ----> "egyelőre" :O

Sk8erPeter

(#997) laracroft válasza Apollo17hu (#995) üzenetére


laracroft
aktív tag

Köszi a válaszokat és a helyesírási tanácsot is :D

(#998) laracroft


laracroft
aktív tag

Sziasztok!

Előre is bocs, ha nem egyértelmű mit szeretnék, de próbálok világosan fogalmazni :)

Van egy NAPLO táblám, aminek a LEIRAS mezőjében szeretném megszámolni hányszor szerepel ez a 2 szó: Helyszínen és Leellenõrizve.

A ügyfelet egyértelműen az ACCOUNT és a LINE mező azonosítja. Az IDO mező datetime típusú.
1 bejegyzésben csak az egyik szó szerepelhet, de előfordulhat, hogy egymás utáni bejegyzésekben szerepel a 2 szó ugyanannál az ügyfélnél.

Feltétel:
Ha mindkét szó szerepel egy ügyfélnél, akkor nézze meg, hogy a két bejegyzés között eltelt idő több-e mint 15 perc.
Ha igen számolja 2-nek,
ha nem -tehát a 2 bejegyzés között kevesebb mint 15 perc van- akkor csak 1-nek.

Ezzel próbálkoztam, de syntax error-okba futok :(

select ACCOUNT, LINE, IDO, LEIRAS
from (
(select ACCOUNT, LINE, IDO, LEIRAS
from NAPLO
where a.LEIRAS like '%Helyszínen%') as a
union
(select ACCOUNT, LINE, IDO, LEIRAS
from NAPLO
where b.LEIRAS like '%Leellenõrizve%') as b
)
where if(a.ACCOUNT = b.ACCOUNT and a.LINE = b.LINE) then timestampdiff(minute, a.IDO, b.IDO) > 15
group by ACCOUNT

előre is köszi!

[ Szerkesztve ]

(#999) Apollo17hu válasza laracroft (#998) üzenetére


Apollo17hu
őstag

Szerintem az IF-fel lesz gond, ha addig nem érkezik válasz, este megnézem.

(#1000) Sk8erPeter válasza laracroft (#998) üzenetére


Sk8erPeter
nagyúr

Szerintem ezzel van a para:

....
(select ......, LEIRAS
from NAPLO
where a.LEIRAS like '%Helyszínen%') as a
union
(select ...., LEIRAS
from NAPLO
where b.LEIRAS like '%Leellenõrizve%') as b
....

az a.LEIRAS és b.LEIRAS mezőkre gondolok, így nem hivatkozhatsz rájuk, mert az alquery-ben nem ismeri a MySQL, hogy mi az az "a" meg mi az a "b".
Az alquery-n, a zárójeles részben belül szerintem nem is kell az alias, vagy ha mégis, akkor jó helyre írd az aliast, például:

(select ......, LEIRAS
from NAPLO n1
where n1.LEIRAS like '%Helyszínen%') as a

Remélem nagyjából érthető, mire gondolok.

Ja, bocs, most néztem tovább, tényleg, tuti, hogy az IF is szar.
De mondjuk sokat segített volna, ha bemásolod a konkrét hibaüzenetet, hogy mire hivatkozik.
Szerintem CASE-t kéne használnod:
http://dev.mysql.com/doc/refman/5.0/en/case.html

Na, ha nem sikerül, megnézem normálisabban is, most ennyire tellett.

[ Szerkesztve ]

Sk8erPeter

Útvonal

Fórumok  »  Szoftverfejlesztés  »  MySQL topic
Copyright © 2000-2024 PROHARDVER Informatikai Kft.