senters Posted November 28, 2011 Report Posted November 28, 2011 Tabulas: event [id, .... user_id] favorite [id, event_id, user_id] Lietotājs ielogojas sistēmā un sadaļā "Mani pasākumi" tur rāda lietotāja pievienotos pasākumus ar SQL - http://screencast.com/t/XOPGrIyar.'>http://screencast.com/t/XOPGrIyar. Piemērā lietotāja (UID=13) pievienotie pasākumi. Tā, ka katru pasākumu pats lietotājs un citi var atzīmēt kā favorītu, tad tiek joinota klāt favorītu (favorite) tabula. Līdzīgi arī city un user tabula (bet tas nav šobrīd svarīgi). Piejoinojot favorite tabulu, ja lietotāja pasākumu izvēlējušies vairāki citi lietotāji, rindu skaits selektā dublēsies, jo favorītu tabulā ar attiecīgo favorite.event_id būs vairāki ieraksti. Man vajadzīgs lai tādā gadījumā paņemtu $_SESSION['uid'] jeb lietotāja ID, kurš ir ielogojies un kura pasākumi tie ir. Rakstu šādi, bet nestrādā: event.user_id = '".$_SESSION['uid']."' AND event.date_start >= '".$today_date."' AND (favorite.user_id = '".$_SESSION['uid']."' OR favorite.user_id IS NULL) Šajā gadījumā http://screencast.com/t/XOPGrIyar vajag, lai tiek paņemts no apvilktām rindām, tā kur favorite_user_id = 13.
l27 Posted November 28, 2011 Report Posted November 28, 2011 Taisi divus selectus, kurus apveino ar union: - vienu no tabulas event - otru no tabulas favorit
Gints Plivna Posted November 28, 2011 Report Posted November 28, 2011 LEFT JOIN favorite ON (event.id = favorite.event_id AND favorite.user_id = <nepieciešamais lietotāja id>) Gints Plivna http://datubazes.wordpress.com
senters Posted November 28, 2011 Author Report Posted November 28, 2011 Taisīju ar 2 selektiem un sanāca vajadzīgais - http://screencast.com/t/EvuoeDYtcUz
xPtv45z Posted November 29, 2011 Report Posted November 29, 2011 Vispār jau tev tur nav 2 selekti, ja tur atlasīs 1000 eventus, tad būs 1000 un 1 selekts.
Recommended Posts