Autor Zpráva
dehtak
Profil
Ahoj potrebuji vytvorit tabulky pro kino tabulka events ve ktere jsou casy a tabulka movies ve ktere je film.
Jde mi o to to ze Film na nekolik promitacich casu. Ale vypis chci provadet tak, ze vyhledam casy a vlastne spojenim potrebuju aby mi to vratilo jeden film. Vubec netusim jak to provest.
Vyresil jsem to tak ze jsem si nechal z databaze vypsat casy
pak jsem v php projel ty casy a a od kazdeho casu vzal pouze 1 id filmu. To pak zadal do prikazu mysql.
........ "SELECT * FROM events WHERE time >=$timeNow AND time <= $maxTime ORDER BY time ASC".... 
$movie_id = []; 
foreach ($events as $event){if(!isset($movie_id[$event['movie_id']])){$movie_id[$event['movie_id']]=$event['movie_id']; }}
$mi = implode (',',$movie_id); 
a pak jsem zadal druhej prikaz pro mysql 
"SELECT * FROM movies WHERE id IN ($mi)"; 

Ale tohle reseni neni to pravy orechovy . Nejde to udelat jednim prikazem v mysql ?
Ze bych dal tabulce events movie_id cizi klic .
Ale de o to ze ty eventy budu mazat a a nechci aby to nejak zasahovalo do tabulky filmu. S tema cizima klicema nemam moc skusenosti.

Dalsi vec je ze v tabulce events mam radek is3D to znamena ze se bude film promitat ve 3D.
Ale ten samej radek mam i v movies. Jelikoz film se defalutne promita ve 2D. Muze se ale stat ze v 8 hodin vecer se bude film promitat ve 3D , proto to mam i v eventech.

Tdyz treba budu vypisovat film kterej se bude promitat az nekdy za mesic a jeste nema promitaci casy tak v nem jsou informace jestli bude ve 3D v jakem jazyce bude atd..
Ale ty stejny radky mam i v eventech. Jelikoz v nejakej cas az ho ten film bude mit se bude promitat treba ve 3D a v anglictine.


Kdyz sem se pokousel o spolecny vypis jednim prikazem tak mi to hodilo chybu ze mam duplicitni column.
To bych asi potreboval taky nejak poresit.
Kajman
Profil
Různé přístupy jsou porovnány např. zde
Srovnání dotazů do závislých tabulek

To s těmi dvěma dotazy je většinou naopak to pravé ořechové, jen to je více programování v php.

Kdybyste přeci jenom šáhnul pro jeden dotaz, tak u duplicitních sloupců můžete použít alias pro jeden z nich
select e.triD as e_triD, m.triD as m_triD,.... from events e join movies m on e.movie_id = m.id ...
nebo rovnou zkombinovat obě hodnoty s tím, že event hodnota bude mít přednost a pokud bude null, tak se použije hodnota z movie
select coalesce(e.triD, m.triD) as triD,....

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