- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Vodafone mobilszolgáltatások
- Motorola Moto G24 Power - hol van az erő?
- A Watch7-tel debütálhat a Samsung vércukormérője
- Redmi Note 13 Pro 5G - nem százas, kétszázas!
- A Honor és a Huawei uralja a kínai mobilpiacot
- Yettel topik
- Huawei P30 Pro - teletalálat
- Samsung Galaxy Watch6 Classic - tekerd!
- Garmin Forerunner 165 - alapozó edzés
Hirdetés
-
A Video AI lehet a One UI 6.1.1 ütőkártyája
ma Vagy hogy fogja a mesterséges intelligencia manipulálni a mozgóképeket?
-
Robotkart irányított a majom a kínai Neuralink agyi chipjével
it A mindezt lehetővé tévő Neucybert a Neuralink kínai riválisa, a Beijing Xinzhida Neurotechnology fejlesztette ki.
-
Új gyártástechnológiai útitervvel állt elő a TSMC
ph 2027-re érkezhet meg a vállalat 1,6 nm-es eljárása, de a sztárok inkább az olcsóbb node-ok lesznek.
Új hozzászólás Aktív témák
-
Kommy
veterán
Sziasztok!
Lenne egy kis gondom.
Van egy lekérdezésem amivel megkapok minden szükésges adatok kivéve néhányat, oda csak egy id-t kapok.
select title, user_id, summary url from entries ORDER BY letrejott DESC LIMIT 0 , 15
ezzel megkapom csökkenő sorrendben az első 15 cikket. Ezzel nincs is gond, de mint láltható csak user_id-t kapok ami egy másik táblában benne van a rendes név is, ennek a táblának a neve users és van benne user_id és username mező. Hogy tudnám azt megcsinálni, hogy az user_id helyett az username jelenjen meg.
Remélem érthető mit szeretnék.
-
Kommy
veterán
válasz Brown ügynök #807 üzenetére
Köszönöm , úgy néz ki jó lesz, már csak rossz táblából akarom szedni, mert több ugya olyan id is van benne, meg kell keresnem a megfeelő táblát.
-
Sk8erPeter
nagyúr
válasz Brown ügynök #807 üzenetére
Igazából mi az oka, hogy nem mondjuk INNER JOIN-nal csinálod?
Úgy értem, van valami előnye? Tulajdonképpen melyik a gyorsabb? Én úgy tudtam, hogy előnyösebb ilyen esetekben INNER JOIN-t használni, de lehet, hogy valamiről nem tudok.Sk8erPeter
-
martonx
veterán
válasz Sk8erPeter #809 üzenetére
MS SQL-nél az inner join nagyságrendekkel gyorsabb, mint a beágyazott selectek. Oracle-lel nincs tapasztalatom.
Mondjuk amíg nem több százezres táblákon használsz ilyen alselectes beágyazásokat, addig szinte mindegy.Én kérek elnézést!
-
Brown ügynök
senior tag
válasz Sk8erPeter #809 üzenetére
@martonx: Nem tudtam melyik a jobb...
...de most már felírom.
[ Szerkesztve ]
"hacsak nem jön a jó tündér break utasítás képében..."
-
Sk8erPeter
nagyúr
Ja, köszi, én is így tudtam, de tudtommal MySQL-re is pontosan ugyanez igaz.
Egyébként a beágyazott selectnél valahogy szerintem jóval logikusabb is az inner join-os lekérdezés, már akkor is, amikor ránéz az ember a query-re, érti, hogy itt mi fog történni. Ennél az "alselectnél" először néztem, hogy ezt most miért úgy.Sk8erPeter
-
martonx
veterán
válasz rum-cajsz #813 üzenetére
Nem gondoltam, hogy lehet olyan eset, ahol az alselect gyorsabb lehet, de végülis mittudomén talán előfordulhat ilyen.
Éppen a héten optimalizáltam egy kolléga kódját, aki szerette az alselecteket (mondjuk régivágású programozók még emlékeznek az SQL-ek hőskorára, amikor NEM is létezett inner join - 2000-es évek előtt). Mit ne mondjak százezres tételszámoknál (mind főselect, mind alselect több százezer sor) perceket lehetett nyerni, hogy 4-5 inner joinba rendeztem át a cuccot.Tényleg és ti mit szóltok a temp táblákhoz? Múltkor ledöbbenve hallottam, hogy nem kellene használni őket. Szerintem ez hülyeség. Szerintetek? MSSQL alatt eléggé furcsállom, hogy ne kellene temp táblákat használni. Én még PostgreSQL, MySQL-ben is használok temp táblákat (8.0 felett, az ennél régebbiekben inkább csak elméleti lehetőség, mintsem gyakorlati).
Én kérek elnézést!
-
rum-cajsz
őstag
alselect: amikor sok táblát kell összekapcsolni, akkor szoktam használni (oracle), és az optimalizáló meg szokta hálálni. 1-2 órás futás helyett 10-20 perces eredmény.
temp tábla: A nem használat szerintem is hülyeség. Vagy mit javasolnak helyette? Esetleg memóriában tárolt tömböket?
=Kilroy was here============================ooO=*(_)*=Ooo=======
-
Brown ügynök
senior tag
Nem biztos hogy jól értem, de ha csak annyit szeretnél, hogy egy cikknek több kategóriája legyen, akkor csinálsz egy táblát a cikk id-vel, meg kategória id-vel és kész. Annyiszor veszed fel a kategória id-ket amennyi szükséges.
cikk_id | category_id
1 | 2
1 | 3[ Szerkesztve ]
"hacsak nem jön a jó tündér break utasítás képében..."
-
Kommy
veterán
válasz Brown ügynök #817 üzenetére
Ezek kész táblák, ebből kéne kinyernem, hogy egy adott cikkhez mely kategóriák tartoznak.
Ehhez kéne egy lekérdezés amivel visszakapom a kategóriákat az adott cikkhez.
Remélem így érthető.
-
Brown ügynök
senior tag
-
Kommy
veterán
válasz Brown ügynök #819 üzenetére
Sajnos ezt a hibaüzenetet kapom :
Query failed: Subquery returns more than 1 row
-
martonx
veterán
válasz rum-cajsz #815 üzenetére
Az volt a javaslat, hogy temp tábla helyett hozzunk létre minden esetben igazi táblákat. Belegondolni is nonszensz...
Megdöbbentő, hogy néha magukat szakértőnek kiadó emberek, cégek mennyire nem értenek az adott témához.
Azt mondták azért jobb a minden esetben fizikai tábla, mert azt jobban lehet optimalizálni. Ez akár igaz is lehetne, node legyen több száz, több ezer fizikai táblánk? Ki fogja ezt karbantartani, átlátni? Hülyék....Én kérek elnézést!
-
Kommy
veterán
válasz Sk8erPeter #823 üzenetére
Nem ilyet keresek hanem 100%-osan ezt . Köszönöm
Brown ügynök: Neked is köszönöm a fáradozást.
[ Szerkesztve ]
-
Kommy
veterán
Szeretnék mégegy segítséget kérni igaz most próbálkoztam de valami nem jó.
SELECT url, count(*) as hsz FROM comments group by url limit 0,15
ez a kód megy is ezzel megkapom ugye url szerint csoportosítva a hozzászólások számát.Viszont nekem ezt még rendeznem kéne. a cikk kiadása szerint.
De sajnos ami szerinte rendeznem kéne az egy másik táblában van.
Még hozzá a cikkek (entries) táblában.Ez a lekérdezés a cikk többi adatáts szolgáltatja számomra és itt már rendezve, van és hogy ehhez meglegyen a hozzászólások száma is.
SELECT entries.title, , summary, entries.url, startat,
GROUP_CONCAT(entrycategories.title SEPARATOR ', ') categories
FROM entries
LEFT JOIN entries_entrycategories
ON entries.id = entries_entrycategories.entry_id
INNER JOIN entrycategories
ON entries_entrycategories.entrycategory_id = entrycategories.id where entries.active = 1 and startat <= '$date'
GROUP BY entries.title ORDER BY startat DESC LIMIT 0,15Remélem érthető mit szeretnék.
Ha tudtok valami jó anyagot sql-hez azt is megköszönném.
-
Sk8erPeter
nagyúr
Elég nagy könnyítés lenne, ha megmutatnád a táblaszerkezeteket. Legalábbis most ennyiből nehéz kitalálni, mi szerint kéne joinolni a `comments` táblát is a jelenlegi query-hez, melyik id-nak kell stimmelni. Persze találgatni lehet, de egyszerűbb lenne, ha a konkrét megoldást tudnánk megmutatni, nem?
Ha pl. phpmyadminban rámész az exportra, mutatja a CREATE TABLE... részt (sql dump), abból már elég jól látható lenne a dolog.
[ Szerkesztve ]
Sk8erPeter
-
Kommy
veterán
válasz Sk8erPeter #827 üzenetére
Comments
CREATE TABLE IF NOT EXISTS `comments` (
`id` int(11) unsigned NOT NULL auto_increment,
`url` varchar(255) collate utf8_unicode_ci NOT NULL,
`user_id` int(11) unsigned NOT NULL,
`username` varchar(255) collate utf8_unicode_ci NOT NULL,
`text` text collate utf8_unicode_ci NOT NULL,
`replyto` int(11) unsigned NOT NULL,
`rank` int(11) unsigned NOT NULL,
`created` int(10) unsigned NOT NULL,
`updated` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `rank` (`rank`),
KEY `url` (`url`),
KEY `user_id` (`user_id`)
)Entries
CREATE TABLE IF NOT EXISTS `entries` (
`id` int(11) unsigned NOT NULL auto_increment,
`file_id` int(11) unsigned NOT NULL,
`user_id` int(11) unsigned NOT NULL,
`startat` int(11) unsigned NOT NULL default '0',
`title` varchar(255) collate utf8_unicode_ci NOT NULL,
`url` varchar(255) collate utf8_unicode_ci NOT NULL,
`summary` text collate utf8_unicode_ci NOT NULL,
`text` text collate utf8_unicode_ci NOT NULL,
`comments` int(11) unsigned NOT NULL default '0',
`sticky` tinyint(2) unsigned NOT NULL default '0',
`comment_enabled` tinyint(2) unsigned NOT NULL default '1',
`active` tinyint(2) unsigned NOT NULL default '1',
`rank` int(11) unsigned NOT NULL,
`updated` int(11) unsigned NOT NULL,
`created` int(11) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `file_id` (`file_id`),
KEY `url_2` (`url`),
KEY `rank` (`rank`),
KEY `startat` (`startat`),
KEY `sticky` (`sticky`),
KEY `user_id` (`user_id`),
KEY `title` (`title`),
KEY `comment_enabled` (`comment_enabled`),
KEY `active` (`active`),
KEY `created` (`created`),
KEY `updated` (`updated`)
)Entries_entrycategories
CREATE TABLE IF NOT EXISTS `entries_entrycategories` (
`entry_id` int(10) unsigned NOT NULL,
`entrycategory_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`entry_id`,`entrycategory_id`),
KEY `fk_wb_entrycategories_has_wb_entries_wb_entries1` (`entry_id`)
)entrycategories
CREATE TABLE IF NOT EXISTS `entrycategories` (
`id` int(10) unsigned NOT NULL auto_increment,
`lft` int(10) unsigned NOT NULL,
`rgt` int(10) unsigned NOT NULL,
`parent_id` int(10) unsigned NOT NULL,
`scope` int(10) unsigned NOT NULL,
`main` tinyint(2) unsigned NOT NULL,
`showitems` tinyint(2) unsigned NOT NULL default '1',
`file_id` int(10) unsigned NOT NULL,
`title` varchar(250) collate utf8_unicode_ci NOT NULL,
`url` varchar(250) collate utf8_unicode_ci NOT NULL,
`jumpto` varchar(250) collate utf8_unicode_ci NOT NULL,
`active` tinyint(3) unsigned NOT NULL default '1',
`created` int(10) unsigned NOT NULL,
`updated` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `url_2` (`url`),
KEY `lft` (`lft`),
KEY `rgt` (`rgt`),
KEY `parent_id` (`parent_id`),
KEY `active` (`active`),
KEY `created` (`created`),
KEY `file_id` (`file_id`),
KEY `main` (`main`),
KEY `scope` (`scope`),
KEY `showitems` (`showitems`),
KEY `jumpto` (`jumpto`)
) -
Apollo17hu
őstag
Szia!
Ahhoz mit szólsz, ha fogod a "Comments" táblára megírt lekérdezésed (url és count(*) mezőkkel), amit az "url" mezőn keresztül összekötsz az "Entries" táblából készített lekérdezéssel (ami csak az "url" és a "created" mezőket tartalmazza", majd tolsz az egészre egy DISTINCT-et?
Valahogy így:
SELECT DISTINCT
comments_allekerdezes.url
,comments_allekerdezes.db
,entries_allekerdezes.created
FROM
(SELECT url
,COUNT(*) as db
FROM comments
GROUP BY url) comments_allekerdezes
,(SELECT url
,created
FROM entries) entries_allekerdezes
WHERE comments_allekerdezes.url = entries_allekerdezes.url
ORDER BY entries_allekerdezes.created[ Szerkesztve ]
-
Kommy
veterán
válasz Apollo17hu #829 üzenetére
Nekem jó lenne, csak az a gond, hogy semmit nem kapok vissza ebből a lekérdezésből.
Megvan miért nincs választ az url mezőkben levő linkek nem ugyan olyan formában vannak , a comment ben van egy cikk/ az url elött a másikban nincs.
[ Szerkesztve ]
-
Apollo17hu
őstag
-
Sk8erPeter
nagyúr
Eleve azt nem értem, miért URL szerint csoportosítod... Az URL szerinti "összekötéssel" sem értek egyet, nagyon rossz megoldás.
Szerintem az lenne a normális megoldás erre, hogy van mondjuk egy cikked/bejegyzésed, annak pedig van egy id-ja, és egy másik táblában meg az ehhez a cikkhez és id-hoz tartozó kommentek, hozzászólásoko vannak nyilvántartva. A másik, kommenteket tároló táblában tehát tárolod a cikk id-ját is, és ennek segítségével JOIN-olod a két táblát (nem pedig az url mező segítségével; vagy csak simán lekérdezed a cikkhez tartozó kommenteket), így megkapod a cikkhez tartozó kommenteket.
Most a Te comments tábládban nem látok ilyen, a konkrét cikkre vonatkozó id-t, ami jelezné, hogy a kommentek melyik cikkhez tartoznak, az entries táblában viszont látok egy "comments" mezőt. Ennek most nem nagyon értem a szerepét, mert ha ebben felsorolásszerűen vannak a kommentek id-jai, akkor az nagyon rossz megoldás. De lehet, hogy ennek ehhez nincs köze, erről nem írtál, kitalálni meg nehéz.
Viszont ezt az url mezőn keresztüli összekapcsolgatást gyorsan felejtsd el. Az sem világos, hogy ha ennek a két url mezőnek elvileg azonosnak kellene lenni, akkor mi értelme, hogy ebből kettő van... Szerintem átalakításra szorul a táblastruktúrád, vagy most hirtelen csak én nem veszek észre valamit.Sk8erPeter
-
Kommy
veterán
válasz Sk8erPeter #834 üzenetére
Sajnos az adatbázis nem az enyém, amiből dolgozok, nekem csak aza adatokat kell kinyernem belőle. Én sem tartom jó dolognak ezt, de sajnons nincs más lehetőségem, csak olvasási jogom van az adatbázira, abból kell dolgoznom ami rendelkezésemre áll.
Maga az a comment mező semmit nem tartalmaz, én először azt hittem az kapcsolja össze a kommentekel, vagy kommentek számát adja vissza de sajnon nulla az összes érték
Én elfelejteném az UT-en keresztüli összekapcsolást ha lenne más lehetőség de nincs.
Vicc az egész amúgy, 1 hete kérdeztem a fejlesztőktől, tegnap jött rá a választ de arra az időre rájöttem mindenre.
Szerintem az adatbázis ahogy épült az oldal , úgy rakták össze, egy UML diagrammjuk sincsa az adatbázisről, hoyg a kapcsolatokat láthassam. Nem is készült a projekthez ezért vannak szerintem ilyen fejetlenségek benne.
PazsitZ, Apollo17hu: köszönöm a válaszokat.
-
Sk8erPeter
nagyúr
Ja értem, így már más a helyzet. Akkor végül megoldódott a dolog a CONCAT-tal?
Amúgy szerintem az is gáz, hogy ha már eleve nem adnak a kezedbe egy normális dokumentációt az egészről, akkor legalább használnák ki a kommentelési lehetőséget a táblákhoz és annak egyes mezőihez. Azt sem véletlenül találták ki. Mondjuk ritkább, hogy komplex rendszernél az adatbázison belül kommenteket helyeznének el, de akkor jobb esetben legalább van valami doksi az egészről.
[ Szerkesztve ]
Sk8erPeter
-
lakisoft
veterán
Nem tudja valaki hogyan lehet egy MySQL-ben összefűzni két nvarchar típusú értéket.
Mire megírtam a kérdést addigra megtaláltam a választ is rá.
Concat('Egyik szöveg','Másik szöveg')
Ahogy az angoltanárom mondta egyetemen: "You shoud go to the elementary school" +
Na meg ahogy látom itt is éppen ez a téma, bocsánat a redundanciáért.
[ Szerkesztve ]
-
lakisoft
veterán
Másik kérdés valaki tudja mi a különbség a
like valami%'
és a
like 'valami%'között
MySQL-ben dolgozom jelenleg és semmi nem úgy van mind a nagyoknál . Oracle és MSSQL-ben vágom.[ Szerkesztve ]
-
lakisoft
veterán
válasz Brown ügynök #839 üzenetére
okés akkor újabb kérdés.
'valami'
"valami"
Között mi a különbség? -
lakisoft
veterán
válasz Brown ügynök #841 üzenetére
Köszönöm.
MySQL-nek szinte mindegy.
Oracle-ben és MSSQL-ben ez nincs így. -
Sk8erPeter
nagyúr
válasz Brown ügynök #841 üzenetére
"Stick to using single quotes."
Mondjuk én MySQL-ben pont a dupla idézőjelekhez ragaszkodom a query-knél a PHP-s kódjaimban. Ennek egyszerű a magyarázata, PHP-ben ha duplaidézőjelbe teszek egy adott stringet - pl. az egész query-t, amit majd le akarok futtatni -, akkor a PHP megpróbálja megkeresni a benne lévő esetleg behelyettesítendő változókat, ez meg lassít. Ezért az egész stringet (magát a query-t) aposztrófok közé rakom, és hogy ne kelljen escape-elni mindig az ezenbelül lévő aposztrófokat, inkább macskakörmöt használok. Ha működik, és nem számít hibásnak, a tököm se fog szenvedni az escape-elgetéssel.(Persze más adatbázisnál akkor marad az escape-elés, vagy az egész string macskakörmök közé rakása.)
[ Szerkesztve ]
Sk8erPeter
-
thumb
aktív tag
Sziasztok!
Kellene nekem egy ki segítség. Felraktam a web-re a webspellt viszont a video rész nem működik egészen pontosan ez írja ki:
# Query failed: errorno=1146
# error=Table 'teamdestiny555.ws_K2E_videos_settings' doesn't exist
# query=SELECT * FROM ws_K2E_videos_settingsez ugyebár azt jelenti, hogy nincs ilyen tábla az sql file-ban ami a serveren van viszont ahhoz hogy legyen be kéne írni de nem tudjuk a cellákat szóval kellene egy működő és abból átírni vagy azt felrakni ehelyett ha van esetleg valakinek kérem dobja át nekem vagy ha valaki tudja milyen sorok híányzonak beírom hátha működik vele.
előre is nagyon köszönöm mindenkinek aki segít
üdv.: Thumb
A lepke egy olyan rovar, amely a helikopterek családjából származik.
-
martonx
veterán
És ezt végigcsináltad? Különösképpen az 5-ös 6-os pontokra:
http://www.webspell.org/index.php?site=faq&action=faq&faqID=16
Hibát írt ki közben?
Amúgy mire jó ez a webspell CMS? Miben jobb mint a hagyományos CMS-ek?
Én kérek elnézést!
-
thumb
aktív tag
Új hozzászólás Aktív témák
- Autós topik látogatók beszélgetős, offolós topikja
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Kerékpárosok, bringások ide!
- Egérpad topik
- Kés topik
- Vodafone mobilszolgáltatások
- PlayStation 5
- (nem csak) AMD FX / Ryzen tulajok OFF topikja
- Politika
- Milyen billentyűzetet vegyek?
- További aktív témák...