Zadejte hledaný výraz...

Sql hlavolam :

Fidelio
verified
rating uzivatele
21. 4. 2010 20:17:15
Zdravím,
tabulka clanku (tabulkaAlfa )
tabulka tagu pro kazdy clanek (tabulkaBeta)
dejme tomu ze clanek ma tagy C1 B2 G5, ale muže mít jen C1 nebo naopak může mít také c2 B2 G5 spolecne s c1 b2 g5...
Je potřeba vytahnout vsechny clanky odpovidajici
$a = "a1";
$b = "b3";
$c = "c1";
$d = "d4";
$e = "e2";
$f = "f5";
$g = "g8";
Napada někoho jak to elegantne vyresit?
dííííííky moc
struktura db:
CREATE TABLE `tabulkaAlfa ` (
`SPid` int(3) NOT NULL auto_increment,
`SPnadpis` varchar(500) collate utf8_czech_ci NOT NULL,
`SPtext` text collate utf8_czech_ci NOT NULL,
CREATE TABLE `tabulkaBeta ` (
`sdid` int(5) NOT NULL auto_increment,
`SPid` int(3) NOT NULL,
`sdatr1` varchar(10) collate utf8_czech_ci NOT NULL default '0',
`sdatr2` varchar(10) collate utf8_czech_ci NOT NULL default '0',
`sdatr3` varchar(10) collate utf8_czech_ci NOT NULL default '0',
21. 4. 2010 20:17:15
https://webtrh.cz/diskuse/sql-hlavolam/#reply494928
hm
verified
rating uzivatele
(20 hodnocení)
21. 4. 2010 20:32:37
promin ale pokud to dobre chapu pak je navrh databaze zcela spatny... na tohle se zcela urcite pouziji 3 tabulky - jedna s clanky, dalsi s existujicimi tagy a dalsi spojovaci tabulka na clanky a tagy... pak je to co ty rikas vcelku hracka
21. 4. 2010 20:32:37
https://webtrh.cz/diskuse/sql-hlavolam/#reply494927
Fidelio
verified
rating uzivatele
21. 4. 2010 20:39:02
to si nemyslim, protoze musis mit zaroven c1 a e3 napriklad... to ve treti tabulce neudelas... chapes musi to splnovat vsechna pravidla k tagum aby se clanek vytisknul....
21. 4. 2010 20:39:02
https://webtrh.cz/diskuse/sql-hlavolam/#reply494926
hm
verified
rating uzivatele
(20 hodnocení)
21. 4. 2010 21:02:19
kdyz neznas ani normlani formy databaze tak ti radim se do niceho podobnyho vubec nepoustet :) tvoje databaze ma uplne debilni navrh... chapu to dobre ze to mas omezene na 3 tagy pro clanek a zaroven jeden tag opakujes v tabulce tolikrat kolik clanku ho u sebe ma? to ej prece uplne spatne :)
navic pres joiny a foreign keye to pres treti tabulku smaozrejme hrave udelas... ne fakt doporucuju google a "normální formy databáze" a uc se
vis co podle nazvu tematu jsem cekal ze to bude neco slozityho ale ty tady resis uplne trivialni ukol - uplne zakladni vec a nevis jak na to :) to mi rekne jen jedno - otevri si nejaky serial o sql (je jich i v cestine fakt hodne) a hzacni se ucit znova, protoze ted to proste neumis :)
21. 4. 2010 21:02:19
https://webtrh.cz/diskuse/sql-hlavolam/#reply494925
Fidelio
verified
rating uzivatele
21. 4. 2010 21:40:28
tak chytraci... nakonec vyreseno pres dve tabulky... jen s jinym atributem...
CREATE TABLE `tabulkaBeta` (
`sdid` int(5) NOT NULL auto_increment,
`SPid` int(3) NOT NULL,
`a` int(2) default NULL,
`b` int(2) default NULL,
`c` int(2) default NULL,
`d` int(2) default NULL,
`e` int(2) default NULL,
`f` int(2) default NULL,
`g` int(2) default NULL,
pak se zeptam jenom select * from beta where (a = $a or a is null) and (....)
21. 4. 2010 21:40:28
https://webtrh.cz/diskuse/sql-hlavolam/#reply494924
hm
verified
rating uzivatele
(20 hodnocení)
21. 4. 2010 21:46:04
stejne trvam na tom ze navrh databaze mas uplne spatne :) je uplne jedno ze to "funguje" je to prasarna a ten dotaz pak taky :) potes jestli to nedelas jen pro sebe ale nekomu to treba prodas, to pak lituju toho kdo to koupi :)
21. 4. 2010 21:46:04
https://webtrh.cz/diskuse/sql-hlavolam/#reply494923
Martin Klíma
verified
rating uzivatele
(13 hodnocení)
21. 4. 2010 22:15:26
Upřímně řečeno, nepochopil jsem vůbec o co mu jede....možná by se prvně mohl naučit aspoň popsat problém.
21. 4. 2010 22:15:26
https://webtrh.cz/diskuse/sql-hlavolam/#reply494922
hm
verified
rating uzivatele
(20 hodnocení)
22. 4. 2010 00:40:35
Napsal Pooky;500558
Upřímně řečeno, nepochopil jsem vůbec o co mu jede....možná by se prvně mohl naučit aspoň popsat problém.
to aj jsem pochopil :) ale ma to uplne spatne :) kdyby mi nekdo predal takovouhle praci tak mu to omlatim o hlavu...
22. 4. 2010 00:40:35
https://webtrh.cz/diskuse/sql-hlavolam/#reply494921
Jako hlavolam dobry.
Tvari se to jak domaci ukol.
Ale popsane reseni je opravdu SQL prasarna.
Treti - spojovaci - tabulka je dobre reseni.
22. 4. 2010 08:51:14
https://webtrh.cz/diskuse/sql-hlavolam/#reply494920
duben
verified
rating uzivatele
(49 hodnocení)
22. 4. 2010 10:37:14
Proč pro uložení tagu jsou 3 pole? To nedává smysl. Logické je použití tabulky 2 ve tvaru:
CREATE TABLE `tabulkaBeta ` (
`sdid` int(5) NOT NULL auto_increment,
`SPid` int(3) NOT NULL,
`sdatr` varchar(10) collate utf8_czech_ci NOT NULL default '0')
A pak máš elegantní řešení pro tenhle specifický případ bez pomocné tabulky:
SELECT a.Spid, a.SPnadpis, a.SPtext, SUM(b.ControlAtr) FROM tabulkaAlfa a JOIN
(SELECT DISTINCT SPid,
CASE sdatr
WHEN 'a1' THEN 1
WHEN 'b3' THEN 3
WHEN 'c1' THEN 5
WHEN 'd4' THEN 7
WHEN 'e2' THEN 11
WHEN 'f5' THEN 13
WHEN 'g8' THEN 17
END CASE as ControlAtr
FROM tabulkaBeta
WHERE sdatr in ('a1', 'b3', 'c1', 'd4', 'e2', 'f5', 'g8')
) b
ON a.Spid = b.Spid
GROUP BY a.Spid, a.SPNadpis, a.SPtext,
HAVING SUM(ControlAtr) = 57
22. 4. 2010 10:37:14
https://webtrh.cz/diskuse/sql-hlavolam/#reply494919
hm
verified
rating uzivatele
(20 hodnocení)
22. 4. 2010 14:03:09
Napsal duben;500722
Proč pro uložení tagu jsou 3 pole? To nedává smysl. Logické je použití tabulky 2 ve tvaru:
osobne bych byl spise pro spojovaci tabulku aby se mi tagy neopakovali :) ale mas pravdu ze i takto je to mozne... A kdybych mohl tak ti dam palec nahoru :) hezke
22. 4. 2010 14:03:09
https://webtrh.cz/diskuse/sql-hlavolam/#reply494918
duben
verified
rating uzivatele
(49 hodnocení)
22. 4. 2010 15:10:10
Napsal AlesiBoss;500844
osobne bych byl spise pro spojovaci tabulku aby se mi tagy neopakovali :) ale mas pravdu ze i takto je to mozne... A kdybych mohl tak ti dam palec nahoru :) hezke
Aby se tagy neopakovali jde poresit snadno, staci dat unikatni klic kombinaci poli spid a sdatr a neni potreba dalsi tabulky a datovych duplicit
Na palec nahoru tu na webtrhu mame reputace ;-), ale diky za pochvalu reseni :)
22. 4. 2010 15:10:10
https://webtrh.cz/diskuse/sql-hlavolam/#reply494917
hm
verified
rating uzivatele
(20 hodnocení)
22. 4. 2010 15:25:51
Napsal duben;500892
Aby se tagy neopakovali jde poresit snadno, staci dat unikatni klic kombinaci poli spid a sdatr a neni potreba dalsi tabulky a datovych duplicit
Na palec nahoru tu na webtrhu mame reputace ;-), ale diky za pochvalu reseni :)
ale tam se porad budou tagy opakovat preci ne? :) pokud bude mit tag "prasatko" 5 clanku tak ten tag bude uveden v tabulce petkrat :)
22. 4. 2010 15:25:51
https://webtrh.cz/diskuse/sql-hlavolam/#reply494916
duben
verified
rating uzivatele
(49 hodnocení)
22. 4. 2010 16:18:33
To ano, ale budes mit
Clanek a k tomu 1x prasatko, dalsi prasatko bude k jinemu clanku. Zatimco pokud bych to delal 3 tabulkami, tak stejne musim mit jeste dva sloupce kde bude ID tagu a ID clanku, ale pokud nekdo meni tag, bude se menit jen k tomu clanku a ne pro ostatni. Takze by se muselo odstranit s propojovaci tabulky, udelat novy tag do ciselniku a udelat novy zaznam do propojovaci tabulky. ... Tady by pak spis stalo za uvahu jak se ma cely system chovat jako takovy. Ale to uz pak nesouvisi tak moc s timhle "hlavolamem" :D
22. 4. 2010 16:18:33
https://webtrh.cz/diskuse/sql-hlavolam/#reply494915
Pro odpověď se přihlašte.
Přihlásit