webForumDet fria alternativet

Markera sedda filmer i samma lista

3 svar · 528 visningar · startad av Sasch

SaschMedlem sedan nov. 2002830 inlägg
#1

Tänkte loopa ut en lista med saker som folk borde läsa/se/göra. Problemet blir att få SQL-satsen att markera gjorda saker.

 Movie
 ID  | MovieTitle | ReleaseYear
 int | VarChar    | int

 MovieSeen
 MovieID | UserID | (seen)
  int    | int    | int (1/0)

(Japp, det ska bli multianvändarvänligt)

  SELECT ID, Movietitle, ReleaseYear
  FROM movie
  ORDER BY MovieTitle

Enkelt så här långt.

SELECT ID, Movietitle, ReleaseYear, MovieSeen.Seen
FROM Movie JOIN Movieseen ON (Movie.Id = MovieSeen.MovieId)
WHERE UserID = "& identid &"

Tanken med ovanstående join är rätt (Om man nu bara vill lista de filmer man sett). Problematiken med ovanstående join är ju bara att den loopar ut de jag har sett. Har jag inte sett några får jag inte ut någon.
Det jag vill göra är alltså att lista alla filmer som jag ska se, och sedan få ut en "1/0" som jag sedan kan rödmarkera filmerna som jag sett i samma lista.

exempel skrev:

Terminator: Salvation (2009)
The Sixth Sense (1999) --- Seen
Finding Nemo (2003) --- Seen

Ska jag kanske beblanda mig med en INNER JOIN istället?

Peter SMedlem sedan dec. 20025 483 inlägg
#2
SELECT ID, Movietitle, ReleaseYear, MovieSeen.Seen, CASE WHEN MovieSeen.MoveId IS NULL THEN 'Not seen' ELSE 'Seen' END AS isSeen
FROM Movie LEFT JOIN Movieseen ON (Movie.Id = MovieSeen.MovieId)
AND UserID = "& identid &"

Ovanstående syntax är för (åtminstone) MSSQL och MySQL.

Fältet 'seen' behöver du inte ha med. Det räcker med att användaren finns i tabellen MovieSeen för att denne skall ha sett filmen.

SaschMedlem sedan nov. 2002830 inlägg
#3

YES! Det funkar alldeles utmärkt! Tack :)

CompusaMedlem sedan jan. 20023 327 inlägg
#4

Sasch skrev:

Ska jag kanske beblanda mig med en INNER JOIN istället?

Det var INNER JOIN som du använde. Skriver man bara JOIN så är det samma sak som INNER JOIN.

131 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)