Új hozzászólás Aktív témák
-
bpx
őstag
válasz
don_peter
#1731
üzenetére
Feltételeztem, hogy olyan eset nem fordul elő, hogy egy fórum üzenethez nem létezik user (mert usert általában nem törlünk, csak inaktiválunk), és így nem kell ezek közé is outer join, de egyébként igen.
Ezen kívül, ha van rá igény, azt kellene még megcsinálni, hogy a topikonként a legújabb hozzászólás dátumát és felhasználóját helyesen összegyűjteni, mert egy ilyen GROUP BY-t egy szigorúbb adatbáziskezelő (pl. DB2, MSSQL, Oracle) kapásból visszadob hibával, mert nem determinisztikus az eredmény. (Azt, hogy a MySQL egyáltalán megenged ilyet, én inkább hiányosságnak tartom, mint feature-nek - OK, kikapcsolható ez a működés.)
MySQL-ben sajnos nincsenek analitikus függvények, helyette vannak ilyen kerülő megoldások:
Végül limitálni kellene, hogy hány sort kapunk vissza, hogy ne dolgozzon esetleg feleslegesen az adatbázis, és gondolom a felhasználónak sem a létező összes, akár több száz, ezer topikot rakod ki felületre, hanem csak egy fix mennyiséget, ahogy pl. itt a prohardveren is működik.
-
bpx
őstag
válasz
don_peter
#1729
üzenetére
Ha azok a topikok kellenek, amelyekben nincs hozzászólás, akkor miért a forum_uzenetek van a LEFT JOIN bal oldalán?
forum_uzenetek fu
LEFT JOIN topik t
ON fu.topik_id = t.idEz azt jelenti, hogy azokat fórum üzeneteket is kéred, amelyek egyik topikhoz sem tartoznak.
forum_uzenetek LEFT JOIN topik + UNION bonyolítás helyett nem egyszerűbb lenne a topik LEFT JOIN forum_uzenetek?
-
bpx
őstag
A 4 darab \-ből LIKE-nál 1 darab \ lesz, mert duplán escape-el.
Because MySQL uses C escape syntax in strings (for example, “\n” to represent a newline character), you must double any “\” that you use in LIKE strings. For example, to search for “\n”, specify it as “\\n”. To search for “\”, specify it as “\\\\”; this is because the backslashes are stripped once by the parser and again when the pattern match is made, leaving a single backslash to be matched against.
-
bpx
őstag
válasz
Speeedfire
#1384
üzenetére
-
bpx
őstag
válasz
szmegma
#1360
üzenetére
az a baj a mysqllel, hogy nincs benne egyszeru "generator" funkcio, mert egyebkent ez a feladat pl. arra is lefordithato, hogy generaljunk szamokat 1-31-ig es adjunk hozza ennyi napot a mostani datumhoz, ami tisztan SQL lenne
de rekurziv lekerdezessel megoldhato, csak kell egy olyan forras, amelynek legalabb 31 sora van
peldaul select SQL megoldas:select date_add(CURDATE(), interval o.num day) from
(select @n := @n + 1 as num
from information_schema.columns, (select @n := 0) n
limit 31) o;ezzel persze az a baj, hogy mindig az information_schema.columns-hoz (vagy amire epp meg van irva) kell nyulni + akar el is lehetne tarolni a szamokat 1-31-ig egy kulon tablaban (es nem kell feltalalni ujra a kereket naptar tablaval):
create table numbers (n int);
insert into numbers
select @n := @n + 1 as num
from information_schema.columns, (select @n := 0) n
limit 31;
select date_add(CURDATE(), interval n.n day) from numbers n;csak hat ez meg megint ronda (szerintem)
szemlelteteskeppen, Oracle-ben ez ennyi:
select sysdate + level from dual connect by level <= 31;
a dual tabla sajatossagai miatt ez raadasul sem diszkrol, sem a cache-bol nem olvas, nem kell PL/SQL-ezni meg context switch sincs
-
-
bpx
őstag
válasz
spammer
#1236
üzenetére
na akkor tisztazzuk mit szeretnel
egy adott tablarol megtudni, hogy milyen "color_" kezdetu oszlopai vannak (es semmi adatot)?
ebben az esetben:
SELECT column_name, data_type
FROM information_schema.columns
WHERE table_name='colors'
AND column_name LIKE 'color_%';(a _ karaktert szerintem escape-elni kell ha biztosra akarsz menni, mert a LIKE-ban az pontosan 1 darab akarmilyen karaktert jelenthet, tehat a fenti minta illik arra is pl., hogy "color1")
vagy pedig magat a lekerdezest szeretned eloallitani? tehat nem tudod elore, hogy a tablanak milyen color oszlopai vannak, de szeretned azoknak a tartalmat lekerdezni
ez esetben dinamikus SQL kell
Új hozzászólás Aktív témák
- Crimson Desert
- A fociról könnyedén, egy baráti társaságban
- Nvidia GPU-k jövője - amit tudni vélünk
- Autós topik
- Philips LCD és LED TV-k
- Viccrovat
- Vége a dalnak: nincs több Samsung harmonikamobil
- HiFi műszaki szemmel - sztereó hangrendszerek
- Vezetékes FÜLhallgatók
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- További aktív témák...
- Bowers & Wilkins Dm 303 EISA díjas audiofil hangfal + Lcr 3 center
- Dell ReadyRails A6 1U Rail Kit R210, R210 II, Dx600G, stb. szerverekhez (JWFR6, W6XNW, YNG10)
- Kingston HyperX Fury 2x4GB 2133MHz DDR4 kit / Beszámítás OK! / Akciós Ár!
- Eladó Sony PlayStation 5 (Slim) 1TB Digital Edition 2026.12-ig garanciával!
- ASRock B250M-HDV / MSI B150 PC Mate
- 223 - Lenovo LOQ (15IRX10) - Intel Core i5-13450HX, RTX 5060
- Sony ULT FIELD 1 bluetooth hangszoró
- Beszámítás! Lenovo LOQ 17IRX10 FHD Gamer notebook - i7 13650HX 24GB DDR5 1TB SSD RTX 5050 8GB
- Akció! Gamer PC-Számítógép! Intel Ultra 5 245K / RTX 3080 10GB / 16GB DDR5 / 1TB SSD!
- 241 - Lenovo Legion 5 (15IRX10) - Intel Core i7-13650HX, RTX 5060
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

