Autor | Zpráva | ||
---|---|---|---|
Karel Son Profil * |
#1 · Zasláno: 9. 3. 2016, 07:32:16
Pár týdnů laboruji s MYSQL a z mnoha starších návodů na webu se stále neumím naučit a osvojit složitější výběry dat nad vícero tabulkami, mající různé počty sloupců a jeden společný primární klíč viz příklad:
clanek_id komentar ............ (celkem šest sloupců) clanek_id obsah_clanku..... (celkem osm sloupců) clanek_id tagy ...................... (celkem dva sloupce) Z těchto tří tabulek potřebuji vybírat tři poslední članky a k nim patřící tagy a komentáře, s tím že komentářů může být 0 až "nekonečno" a tagů minimálně 1 max 10. Ze všech tabulek bych v rámci jednoho řádku chtěl vybrat vše ( * ).... jak nato? Pokud mne odkážete na nějaký dobrý polopatický web návod, kde je i hodně podobných příkladů sepsaných budu rád, díky |
||
Kajman Profil |
#2 · Zasláno: 9. 3. 2016, 07:59:48
Nesnažte se to cpát do jednoho dotazu. Udělejte dotazy tři.
select * from obsah_clanku order by clanek_id desc limit 3; select * from komentar where clanek_id in (42,43,44) order by clanek_id desc, komentar_id; select * from tagy where clanek_id in (42,43,44) order by clanek_id desc, tag_id; Dle varianty "Konstantní počet dotazů" z Srovnání dotazů do závislých tabulek |
||
Karel Son Profil * |
#3 · Zasláno: 9. 3. 2016, 08:17:23
já jsem myslel že v rámci každé optimalizace je to nutnost mít co "nejméně" Selectů .... to je právě to že ty články které jsem četl v některých ohledech ve mně zanechávají falešné představy....
díky |
||
Časová prodleva: 9 let
|
0