Autor Zpráva
XOX
Profil *
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
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).

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0