Autor | Zpráva | ||
---|---|---|---|
XOX Profil * |
#1 · Zasláno: 30. 12. 2015, 17:44:54
Zdravim je nejakym zpusobem mozne aby jsem při výpisu z tabulky vypsal její obsah na základě informací z jiné tabulky?
Například kdyby na youtube byla shlédnutí uložena v jedné tabulce a název popisek atd v jiné a já bych to chtěl srovnat podle shlédnutí bylo by to možné? Jestli ano tak jak? |
||
RastyAmateur Profil |
V první tabulce (shlédnutí videí) si uděláš jeden sloupeček "id_videa". Do toho budeš ukládat ID videa, o které se jedná. Pak, když budeš tu tabulku vypisovat, tak si vytvoříš nový dotaz, který se bude ptát na další informace (třeba název) z první tabulky na základě toho ID.
Doufám, že je to to, co myslíš. Moc jsem to nepochopil. Nebo by to mělo jít možná ještě přes jeden MySQL dotaz, ale to neumím, s tím ti musí poradit někdo jiný. |
||
Dan Charousek Profil |
RastyAmateur:
„Nebo by to mělo jít možná ještě přes jeden MySQL dotaz, ale to neumím, s tím ti musí poradit někdo jiný.“ Stačí tabulky spojit pomocí LEFT JOIN a následně seřadit. Uvažujme tabulky: videos id | name | created_at videos_more_info videos_id | view | rating Dotaz by mohl vypadat nějak takto: SELECT * FROM videos AS v LEFT JOIN videos_more_info AS vmi ON v.id = vmi.videos_id GROUP BY v.id ORDER BY vmi.view DESC |
||
juriad Profil |
Předpokládám, že se bavíme o MySQL. Přečti si Srovnání dotazů do závislých tabulek, kde jsou zmíněné tři možnosti řešení včetně jejich srovnání.
Často stačí položit jeden dotaz, jak navrhuje Dan Charousek, kdyby jej napsal správně. Nesmí se GROUPovat (přece chceme všechny informace) a i kdyby, tak ORDER BY patří až za GROUP BY. |
||
Dan Charousek Profil |
#5 · Zasláno: 30. 12. 2015, 18:14:47
juriad:
„ORDER BY patří až za GROUP BY.“ Pravda, opravil jsem. V tomhle případě group asi nemá smysl, ale myslím, že úplně nevadí. Na druhou stranu si myslím, že někdy by mohl být i žádaný. Např. v situaci, kde bych chtěl vypsat uživatele seřazené podle posledního příspěvku, tak se bez groupu neobejdeme (nebo ano? - třeba se mýlím) pokud by poslední dva příspěvky byly od stejného uživatele, tak se mi vypíše na prvním a druhém místě (bez groupu podle user_id). |
||
Časová prodleva: 9 let
|
0