Autor Zpráva
peta
Profil
S SQL propojenim tabulek mam vzdy problem :)
Potrebuji propojit 3 tabulky a ziskat ze vsech udaje. SQL dotaz sestavuji zhruba takto, ale nevim, zda to bude ok

SELECT
a.id, a.username, a.firstname, a.lastname,
c.category,c.fullname,c.shortname,c.idnumber
FROM `mdl_role_assignments` b
LEFT JOIN `mdl_user` a ON a.id=b.userid
RIGHT JOIN `mdl_course` c ON c.id=b.contextid
WHERE b.role<5
WHERE viditelny

v tabulce B je prirazeni do kurzu role ucitel, student, admin...
v tabulce A mam informace o uzivatelich
v tabulce C mam informace o kurzu
Samozrejme potrebuji zobrazit seznam vsech kurzu z C, k nim seznam uzivatelu podle A a vytridene podle roli v B.

Delam to zatim spravne? kdyztak mi muzete pomoci symbolicky.
Navic si vubec nejsem jisty, zda b.contextid odpovida ID kurzu. Jestli ne, tak to bude jeste dost problem, mozna pres 4tou tabulku :)

---
Tak to bude bolestive, zas celej den budu plodit 1 sql dotaz. Zjistil jsem, ze musim pres 4 tabulky.
mdl_context d
d.id=b.contextid
d.instanceid === courseid
Leo
Profil
Tezko radit, kdyz nezname vztahy mezi tabulkami a co je to za data, a jak to vypada ani vy... Leo
peta
Profil
:) Uz nic, zkusil jsem kolegy, ti maji zname a znami pouzivaji
* MySQL front <- toto
* Microsoft SQL Server Management Studio Express
* Hibernate
A v tom jsem poskladal dotaz (sice group by nerad, ale pro tento ucel staci)

SELECT
`mdl_course`.`visible`,`mdl_course`.`id`, `mdl_course`.`idnumber`,
`mdl_course`.`category`, `mdl_course`.`shortname`, `mdl_course`.`fullname`,
`mdl_role_assignments`.`roleid`,
`mdl_user`.`username`, `mdl_user`.`lastname`, `mdl_user`.`firstname`,
`mdl_role_assignments`.`userid`, `mdl_user`.`id`, `mdl_context`.`instanceid`,
`mdl_context`.`id`, `mdl_role_assignments`.`contextid`
FROM
`mdl_context`, `mdl_course`, `mdl_role_assignments`, `mdl_user`
WHERE
`mdl_user`.`id` = `mdl_role_assignments`.`userid` AND
`mdl_course`.`id` = `mdl_context`.`instanceid` AND
`mdl_context`.`id` = `mdl_role_assignments`.`contextid` AND
`mdl_role_assignments`.`roleid`<5
GROUP BY
`mdl_user`.`id`, `mdl_role_assignments`.`userid`, `mdl_course`.`id`,
`mdl_context`.`instanceid`, `mdl_context`.`id`,
`mdl_role_assignments`.`contextid`
ORDER BY
`mdl_course`.`visible`, `mdl_course`.`category`, `mdl_course`.`fullname`, `mdl_user`.`username`

Leo
Vztahy mezi tabulkami, propojeni, jsem napsal.
"
a.id=b.userid
c.id=b.contextid

v tabulce B je prirazeni do kurzu role ucitel, student, admin...
v tabulce A mam informace o uzivatelich
v tabulce C mam informace o kurzu
Samozrejme potrebuji zobrazit seznam vsech kurzu z C, k nim seznam uzivatelu podle A a vytridene podle roli v B.
"
Vse ostatni je v tom nacrtku SQL dotazu. Ale uz jsem to poresil. Ja tento typ propojeni tabulek moc nemam rad, vetsinou vzdy zapomenu, jak se to sklada dokupy, protoze to nepouzivam kazdy den.

Jinak je to program Moodle CMS, pro elearning. Pokud by te to zajimalo bliz. Vcelku pracuje dobre, dilci casti jsou dost odflaknute :) Treba pokus vypsat kurzy s kejich autory, k tomu zkratky a nejake dalsi veci to v sobe nema a nektere veci je treba delat pres 4 odkazy, 4 skoro stejne tabulky...
Toto téma je uzamčeno. Odpověď nelze zaslat.

0