- Eleglide C1 - a középérték
- OnePlus 8T – fazonigazítás
- Yettel topik
- Samsung Galaxy S21 FE 5G - utóirat
- Apple AirPods Pro (2. generáció) - csiszolt almaságok
- Poco X6 Pro - ötös alá
- Termékoldal buktatta le a Huawei Watch Fit 3-at
- Xiaomi 12 - az izmos 12
- Xiaomi 13T és 13T Pro - nincs tétlenkedés
- Milyen okostelefont vegyek?
Hirdetés
-
VR játék lesz az Batman: Arkham Shadow (Meta Quest 3)
gp Egyelőre csak egy teaser trailert kaptunk a teljes leleplezésre a Summer Game Festen kerül sor.
-
Egyre közelebb a Poco F6 startja
ma Újabb ár/érték csatát nyerhet a Xiaomi almárka.
-
Az NVIDIA szerint a partnereik prémium AI PC-ket kínálnak
ph Megkezdődött az NPU-k elleni hadjárat, de egy fontos részletet nem említ a cég.
Új hozzászólás Aktív témák
-
martonx
veterán
válasz fordfairlane #1449 üzenetére
A kérdéses táblán 4 index is volt, csak éppen aki indexelt, béna volt.
Most kettő index van már csak rajta, de legalább azok jók.Én kérek elnézést!
-
fordfairlane
veterán
Egyébként pont erre való az EXPLAIN, query-optimalizálásra.
x gon' give it to ya
-
PiXeL90
csendes tag
Sziasztok!
Az lenne a kérdésem hogy lefutattam egy insertet egy táblán és amikor megnéztem hogy mit vitt fel akkor láttam hogy felvitt minden adatot rendesen de lapozásnál phpmyadmin-ba több oldalt ad ki mint amennyi kellene. Pl.: Elég lenne összesen 10 oldal az összes rekord megnézéséhez de 15 oldalon lehet lapozni és az utolsó 5 oldalon nincs semmi.
Ez mitől lehet?
Segítségeteket előre is köszi![ Szerkesztve ]
-
Sk8erPeter
nagyúr
válasz PiXeL90 #1455 üzenetére
Most ezt ennyi részletből elég nehéz lenne kitalálni... Azt sem tudjuk, bugról lehet-e szó (verziót sem írtál), nem mutattál egy nyomorék screenshotot sem, ezek szerint más adatbázis-böngészőben sem nézted meg (mint pl. a MySQL Workbench), plusz azt sem tudjuk, milyen query-t futtattál.
Szóval a válasz csak egy nagy kérdőjel.[ Szerkesztve ]
Sk8erPeter
-
bbTamas77
aktív tag
Sziasztok.
INET_ATON() és INET_NTOA() MySQL függvény használta tudna egy példát írni vagy egy szintaxist?
El is tudná érthetően magyarázni.
Magyar leírást nem találtam a függvényről.
Előre is köszönöm a választ.[ Szerkesztve ]
-
Sk8erPeter
nagyúr
válasz bbTamas77 #1457 üzenetére
Magyar leírás lehet, hogy nincs, de a hivatalos dokumentáció sztem elég érthető:
http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_inet-aton
INET_ATON(expr)
Given the dotted-quad representation of an IPv4 network address as a string, returns an integer that represents the numeric value of the address in network byte order (big endian). INET_ATON() returns NULL if it does not understand its argument.
mysql> SELECT INET_ATON('10.0.5.9');
-> 167773449
For this example, the return value is calculated as 10×256^3 + 0×256^2 + 5×256 + 9.
[...]http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_inet-ntoa
" INET_NTOA(expr)
Given a numeric IPv4 network address in network byte order, returns the dotted-quad representation of the address as a binary string. INET_NTOA() returns NULL if it does not understand its argument.
mysql> SELECT INET_NTOA(167773449);
-> '10.0.5.9'
[...]"Röviden: INET_ATON()-nak egy IPv4-címet adsz át paraméterül stringként, ez cserébe ennek a numerikus értékét adja vissza integerként, a számolás mikéntjét a helyiértékek szerint mutatja a képlet. Az INET_NTOA() pedig ugyanez visszafelé (IPv4-címnek megfelelő integer-értéket adsz át paraméterül, stringet kapsz válaszul).
Sk8erPeter
-
bbTamas77
aktív tag
válasz Sk8erPeter #1458 üzenetére
Nagyon szépen köszönöm, így már menni fog.
-
PiXeL90
csendes tag
válasz Sk8erPeter #1456 üzenetére
Adatbázis-kliens verziója: libmysql - 5.5.32
PHPMyAdmin Verziószám: 3.5.8.1deb1
Apache/2.2.22 alatt fut.A lefutatott query így nézett ki:"INSERT INTO regiok(`kereslet_id`, `regio_id`)VALUES($kereslet, $regio)";
De egy másik táblában is lefuttattam és ott nem volt ilyen hiba.
[ Szerkesztve ]
-
Jim-Y
veterán
sziasztok, hogy tudok úgy insertet írni, hogy ha már szerepel ez a sor a táblában akkor ne szúrja be? üdv
ezzel próbálkoztam, de nem jó, beszúr egy újabb sort, nyílván más id-vel, de a többi ugyanaz:S
Példa:
INSERT INTO TABLA (DATUM, ERTEK) VALUES (multhet,ertek1) ON DUPLICATE KEY UPDATE DATUM = DATUM;[ Szerkesztve ]
-
fordfairlane
veterán
INSERT IGNORE INTO tabla ...
ezzel próbálkoztam, de nem jó, beszúr egy újabb sort, nyílván más id-vel, de a többi ugyanaz
Ha van egy inkrementálódó kulcsmező, akkor, ahogy elnézem, nincs kulcsérték megadva, anélkül pedig nem fog működni.
[ Szerkesztve ]
x gon' give it to ya
-
Jim-Y
veterán
válasz martonx #1462 üzenetére
Tárolt eljárás végén insertálok, a gond az, hogy többször is bekerült ugyanaz a sor a táblába, és ez összezavarja egy másik eszköz működését. Most ezzel próbálkozom de hibát dob.
Felveszek egy flaget, kezdetben beállítom nullára, majd lekérdezem, hogy a beszúrni kívánt táblában van-e már ilyen sor, ha van, akkor flag 1 lesz, és ez alapján insert, vagy sem.
Így néz ki kód szintjén:
DECLARE flag INT;
SET flag = 0;
...
...
SELECT 1 FROM tabla WHERE datum = multhet INTO flag;
CASE flag
WHEN 0 THEN (INSERT INTO tabla (datum, ertek) VALUES (multhet,myertek));
ELSE (SELECT 'row already in table');
END CASE;Sajnos erre ezt a hibát dobja:
Script line: 4 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 'INSERT INTO tabla (datum, ertek) VALUES (multhet,myertek));
' at line 120Szerintem így case-en belülre nem lehet insertet rakni, mert sima selectet sikerült.
fordfairlane: a tábla ahova beszúrok egy 3 oszlopos tábla, id, datum, ertek
az id auto increment, és ez a kulcs.
Én tényleg csak azt szeretném elérni, hogy pl van egy ilyen sorom a táblában:22 2013-37 99.9999
akkor ne tudjak egy olyan sort beszúrni, ahol datum = 2013-37
[ Szerkesztve ]
-
Jim-Y
veterán
válasz fordfairlane #1465 üzenetére
Köszi, A megoldás így akkor az lett, hogy átállítottam a dátum oszlopt unique-ra, és az insertbe betettem egy IGNORE-t. Köszönöm a segítséget
-
Sk8erPeter
nagyúr
Hali!
Van egy tábla, amiben olybá tűnik, állandóan egy VARCHAR(32)-mező szerint kérdeznék le (amiben egy olyan string van, ami semmiképp nem tartalmaz whitespace-eket), ezenkívül egy INT-mező van, de ergo összesen 2 mezős a tábla, de pont a stringhez tartozó INT-értéket kérdezném majd le, így az INT-mező igazából másodlagos.
Úgy tudom, VARCHAR-mezőre primary key-t tenni nem túl üdvös megoldás például teljesítmény-tekintetben. Nektek mi a véleményetek erről, igazán gond-e primary key-ként használni egy VARCHAR-mezőt egy viszonylag kevés adatot tartalmazó táblában? Van tapasztalatotok/meglátásotok ezzel kapcsolatban?Sk8erPeter
-
martonx
veterán
válasz Sk8erPeter #1467 üzenetére
Igazad van nem ildomos, de feladat függő, szóval ha jól értettelek, akkor ebben az esetben ez így jó lesz.
Én kérek elnézést!
-
Jim-Y
veterán
Sziasztok.
Azt szeretném megoldani, hogy a táblámban két oszlop együttesen legyen unique. Tehát ne lehessen beszúrni még egy olyan sort a táblába, ahol elsooszlop és harmadik oszlop együttesen már van egy sorban. Ha csak az egyik, vagy csak a másik már szerepel egy sorban attól még be lehessen szúrni.
Elsőnek webes kereséssel kezdtem, találtam is egy használható posztot: [link]
És csak a felől érdeklődnék, hogy szerintetek is így kell-e megoldani a fenti problémát? üdv
-
Zedz
addikt
Sziasztok!
Van egy problémám, amit nem nagyon tudok megoldani. Arról szól a dolog, hogy van 3 táblám.
user -> user-right <- right
User-right egy kapcsoló tábla, ahol a userek id-ja össze van kötve a jogkörük id-val. Szeretnék egy olyan táblázatot készíteni, ami a felhasználónevet és a hozzá rendelt jogkört kiírja. Például jelenleg úgy néz ki a dolog, hogy János - 1, de én ezt szeretném: János - Feltöltő.
Az első variációt meg tudtam oldani egy sima INNER JOIN-nal, de tovább már nem tudom írni a lekérdezésem. Jelenleg így néz ki:
SELECT * FROM `user` INNER JOIN `user_right` ON `user_id` = `id`
-
-
Zedz
addikt
válasz fordfairlane #1477 üzenetére
Áhh köszi, én egybe írtam.
-
bbTamas77
aktív tag
Sziasztok!
MySQL-ben, van egy táblám amibe ismétlődő adatok szerepelnek.
pl::
Pistike 427337 másodperc
Pistike 137 másodperc
Pistike 2437 másodperc
Feri 236 másodperc
Feri 76555 másodpercMost egy olyan lekérést szeretnék megírni MySQL-ben, hogy megszámolni hányszor ismétlődik egy adat, és az ismétlődő adat közül a legnagyobbat kiválasztani.
Sima rendezés nyilván nem jó mert ott nem tudom megszámolni hányszor ismétlődik a sor.
-
cidalain
veterán
Üdv.
Érdekes problémával találkoztam, és nem jutok dűlőre:
Adott egy MySQL adatbázis, melynek van egy táblája:
-ID
-time
-akármiAz ID int 10 típusú, és auto increment.
Beszúráskor előjött egy olyan hibaüzenet hogy Duplicate Entry, és az ID-re hivatkozott. De hát az ID ugye auto increment!
Legelőször az ID típusát vizsgáltam meg hogy nem e túl kicsi, és elérte az adott adattípushoz tartózó maximális értéket, de nem: Int 10 típusú, azaz bazinagy szám is belefér, ellenben a kiakadás a 176874-ik ID-nél történt.
A beszúrásokat egy progi végzi, így a hiba keletkezése után több másik beszúrást is csinált volna, ami szintén nem sikerült, hasonló okok miatt.
Mintha a MySQL tudná hogy mi az utolsó érték, de nem inkrementálja...
Neten olvastam egy helyen ezt, azt javasolják hogy másoljam le a táblát és akkor megjavul, amiben igazából nem látom az összefüggést (persze olyan dögivel van hogy a 127-esnél akad meg a rendszer, de ott mindig kiderül hogy tinyint volt az ID típusa).
Annyit csináltam, hogy létrehoztam egy új táblát azonos szerkezettel, de üresen, visszaállítva az ID auto incrementjét 1-re, hogy kezdje elölről. A dolog működött is, de csak ideig óráig, ismét előjött a hiba, de sokkal korábban, már párezres ID érték esetén is.
Hallottatok már ilyenről, ha igen, tudjátok mi a megoldás?
Mysql DB verzió: 5.0.45[ Szerkesztve ]
>> GearBest Club Veszprém << >> https://www.facebook.com/gbc.veszprem <<
-
martonx
veterán
válasz cidalain #1482 üzenetére
Biztos az Id-vel van a baj? Nem lehet, hogy van rajta valami más unique index is? És az nem engedi ugyanazt az értéket még egyszer felvinni?
Esetleg magát ap rogramot is megvizsgálnám, ami a beszúrást végzi, hogy nem-e az ront el valamit beszúráskor?Én kérek elnézést!
-
cidalain
veterán
válasz martonx #1483 üzenetére
Az ID-n kívüli másik két mező értéke: timestamp, és egy másik táblára mutató azonosító. Egyik sem egyedi, értékük bármi lehet, lehet egyforma is. A programnál állítottunk be logot, hogyha exception van akkor printelje logfájlba a parancsot aminél bekövetkezett. Sima Insert into parancs, jó szintaxissal, és ide dobta a Duplicate Entry-t a mysql return-ja.
Nekünk is a progi a gyanús, de nem nagyon tudjuk pontosan belőni hogy hol. Most már az is gyanúnk hogy a hiba nem is ez, ez csak a következménye a dolognak.
Lehet a mysql-ben olyat esetleg állítani, hogy naplózza az összes queryt egy usertől?
Ezesetben be tudnánk kapcsolni a program által használt userre egy figyelést, és az összes adatbázisban végzett műveletét tudnánk ellenőrizni, és talán közelebb jutnánk a problémához.(sajnos azért is vagyunk tanácstalanok, mert az alap program már 3 éve működik hiba nélkül, és most meg kijött rajta ez a 3 milliomodik beszúrás után. új adatbázisra irányítva a probléma más 100ezernél jelentkezett, most meg már még hamarabb is ki tudjuk akasztani.)
>> GearBest Club Veszprém << >> https://www.facebook.com/gbc.veszprem <<
-
cidalain
veterán
válasz martonx #1485 üzenetére
már megtaláltuk a hibát, sokat segített az programba épített extra logolás.
tulajdonképpen nem is abban az adatbázisban van a hiba, ahol kerestük, hanem egy másikban - backup, ezért nem értettük a problémát. most kiiktattuk a backupot, és minden oké, majd a hétvégén megvizsgáljuk hogy mi sérült meg a backupban.
>> GearBest Club Veszprém << >> https://www.facebook.com/gbc.veszprem <<
-
mcs
veterán
Sziasztok!
Tudnátok javasolni egy olyan webtárhelyet, ami viszonylag olcsó, és olyan Phpmyadmin felületet tartalmaz, ahol kapok jogosultságot a ,,CREATE VIEW" parancshoz? Előre is köszönöm a válaszokat! -
cidalain
veterán
Sziasztok, kis help kellene
Adott egy tábla:
timestamp (PK) | adat1 | adat2 | adat3 | adat4Sok időpont van benne, de nem mindegyik időpontnál van minden adatsornak értéke, van olyan idő ahol valamelyik adat üresen van. és olyan időpont is van ahol több adat értéke is ki van töltve (olyan időpont nincs ahol mindegyik adat üres)
Olyan lekérdezést kellene készítenem, amely 1 lekérdezéssel visszaadja mindegyik adatsor legutolsó időpontját, és értékét (azaz a legutolsó nem üres értéket).
Azaz jelen példa szerint a lekérdezés eredményének 4 sorosnak kellene lennie (és persze ezek között előfordulhat azonos idő, ha az adatok elosztása pont úgy jön ki)a "SELECT adat1 FROM table ORDER BY timestamp DESC LIMIT 1" nyilván nem jó mert ezzel csak egy adatsor legfrissebb értékét kapom meg. a példában csak 4 adatsort írtam, de valójában persze ez sokkal több...
Köszi
[ Szerkesztve ]
>> GearBest Club Veszprém << >> https://www.facebook.com/gbc.veszprem <<
-
cidalain
veterán
válasz PazsitZ #1490 üzenetére
nem
Az esetemben a val értékei nem összehasonlíthatóak egymással:
Átírtam a példát amit küldtél
[link]Fontos hogy nem mindegyik időpontban van kitöltve minden érték, vannak üres cellák is.
én a fennti átírt példához a következő kimenetet szeretném látni:
id val1 val2 val3
4 ló - -
3 - 3 -
5 - - 12345tehát mindegyik val-ból a legutolsó ID-jű nem üres értékűt
de inkább valami ilyen kimenet lenne a frankó:
valid id lastvalue
val1 4 ló
val2 3 3
val3 5 12345[ Szerkesztve ]
>> GearBest Club Veszprém << >> https://www.facebook.com/gbc.veszprem <<
-
cidalain
veterán
eddig ezt úgy csináltam hogy lekérdeztem az utolsó egy napnyi adatot, php-ban feldolgoztam mindegyik adatot egy-egy tömbbe, és aztán kivettem mindegyikből az utolsó értéket meg az időt hozzá.
csak nyilván az alábbi problémák fordulhatnak elő:
- ha az utsó egy napban valamelyik adat mégsem kapna értéket, akkor az nem lesz meg
- a sql lekérdezés eredménye mondjuk 1440 sor, melyből nekem tulajdonképpen annyira van szükségem csak ahány adat oszlopom vana másik hogyha mindegyik adathoz külön lekérdezést csinálok, melyeknek 1-1 sor az eredménye
- ekkor viszont annyi lekérdezés van ahány adatmezőezt szeretném optimalizálni, hogy ne legyen felesleges sok adat, amit még utófeldolgozni kell, és ne legyen sok lekérdezés se.
>> GearBest Club Veszprém << >> https://www.facebook.com/gbc.veszprem <<
-
cidalain
veterán
válasz Apollo17hu #1493 üzenetére
igen
[ Szerkesztve ]
>> GearBest Club Veszprém << >> https://www.facebook.com/gbc.veszprem <<
-
Apollo17hu
őstag
válasz cidalain #1491 üzenetére
valid id lastvalue
val1 4 ló
val2 3 3
val3 5 12345Ez a kimenet szerintem nem megvalósítható, mert a lastvalue mezőben eltérő adattípusok szerepelnének.
Helyette a másik kimenetre egy megoldás:
SELECT s.id, s.val1, "" AS val2, "" AS val3
FROM (SELECT max(id) AS last_id
FROM sample
WHERE val1 <> "") t
,sample s
WHERE s.id = t.last_id
UNION
SELECT s.id, "" AS val1, s.val2 AS val2, "" AS val3
FROM (SELECT max(id) AS last_id
FROM sample
WHERE val2 <> "") t
,sample s
WHERE s.id = t.last_id
UNION
SELECT s.id, "" AS val1, "" AS val2, s.val3 AS val3
FROM (SELECT max(id) AS last_id
FROM sample
WHERE val3 <> "") t
,sample s
WHERE s.id = t.last_id -
cidalain
veterán
válasz Apollo17hu #1496 üzenetére
"Ez a kimenet szerintem nem megvalósítható, mert a lastvalue mezőben eltérő adattípusok szerepelnének."
ezt nem értem, mert mindegyik val adat típusa VARCHAR(25).A másik jó, és azt csinálja amit gondolok, csak 6 darab select van benne.
annyiban különbözik ettől, hogy itt 3 result-ot kell feldolgozni, ott meg csak 1-et.SELECT id,val1 FROM sample
WHERE val1 <> ""
ORDER BY id DESC
LIMIT 1SELECT id,val2 FROM sample
WHERE val2 <> ""
ORDER BY id DESC
LIMIT 1SELECT id,val3 FROM sample
WHERE val3 <> ""
ORDER BY id DESC
LIMIT 1melyik optimálisabb? egy olyan adattáblán lenne használva amiben van 50-100.000 sor!
>> GearBest Club Veszprém << >> https://www.facebook.com/gbc.veszprem <<
-
cidalain
veterán
úgy kell elképzelni a feladatot, hogy például én egy pénzváltót csinálok.
árfolyamokat rögzítek a forinthoz képest.Tábla:
időpont | usd | chf | eur | .............és még sok másik is lehetnebizonyos időközönként valahol a nagyvilágba frissítik az árfolyamokat.
amikor változás van, akkor beszúrok egy időpontot, és azoknál ahol változás volt beszúrom az új árfolyamot.
ahol nem volt változás, ott nem akarok beszúrni semmit.és akkor a lekérdezésnek azt kellene ugye kidobnia, hogy egyes valutáknál melyek a legfrisebb árfolyamok
Az eddigi megoldások korlátosak, és nem igazán idomulnak automatikusan a valuták számának növekedésekornyilván elgondolkodtam egy teljesen másfajta táblaszerkezeten is
idő | valuta típusa | érték -> ahol az idő, és a valuta együtt lenne a PKde ebben az esetben minden időpontnál ahol több valuta is változik annyiszor többször szúródik be ugyanaz az időpont, illetve mindig be kell tennem a valutáknak is az azonosítóját. ettől meg úgy érzem hogy feleslegesen sok anyagot pumpálok az adatbázisba... 100000 adatnál itt már megabájtokat fog jelenteni. és több ilyesmi táblám is lenne még egy adatbázison belül...
>> GearBest Club Veszprém << >> https://www.facebook.com/gbc.veszprem <<
-
cidalain
veterán
válasz cidalain #1498 üzenetére
ha az átgondolt táblát használom akkor egy ilyen egyszerű lekérdezéssel meglennék:
SELECT MAX(date) AS last,type,value FROM `data2`
GROUP BY typeilletve dinamikussá is válna, hisz bármilyen típusú valuta bejöhet később ami most nincs, illetve ki is kerülhet ami már nem kell gond nélkül.
csak rohadtul sok adatom lesz így feleslegesen, attól félek.
>> GearBest Club Veszprém << >> https://www.facebook.com/gbc.veszprem <<
-
PazsitZ
addikt
válasz Apollo17hu #1496 üzenetére
Ha kevés field van akkor végül is mehwet a union is. De szvsz én akkor már nem join-olgatnék subquery-t.
(SELECT id , val1 FROM sample WHERE val1 IS NOT NULL AND val1<>'' ORDER BY id DESC LIMIT 1)
UNION
(SELECT id , val2 FROM sample WHERE val2 IS NOT NULL AND val2<>'' ORDER BY id DESC LIMIT 1)
UNION
(SELECT id , val3 FROM sample WHERE val3 IS NOT NULL AND val3<>'' ORDER BY id DESC LIMIT 1)result:
4 ló
5 3
5 12345- http://pazsitz.hu -
Új hozzászólás Aktív témák
- Iphone 11 fehér 128 GB független
- Eredeti - Apple USB-C kábellel és Magsafe 2 - minden típus - macbook töltő - garancia
- Macbook Pro 16" - 2020 gyártás, i9 és i7, 32/512GB, 4GB Radeon, touchbar, garancia, szürke
- Macbook Pro 15" - 2019, 8 mag i9, 32/512 GB, 4GB Radeon, 90 ciklus, garancia, doboz, szürke (65)
- Macbook Pro 15" - 2018, 6 mag i7, 16/256 GB, 4GB Radeon, 83 ciklus, garancia, ezüst (02)