mysql - måske join eller sum skal bruges?
Jeg er i fuld gang med et filmsite hvor man kan søge på filmtitler og personer blandt andet.Mit problem er imidlertid det at når jeg brugeren henter et recordset frem med skuespillere, f.eks. ved at søge på en del af deres navn, så vil jeg gerne have at den udfra skuespilleren skriver at han er skuespiller, og det samme gælder manuskriptforfatter og instruktør. Men problemet opstår når det gælder personer der både er det ene og andet.
Tabellerne
tabelnavn: film_pers
kolonner: pers_id
fname
lname
og en database der fortæller hvilke film de forskellige pers_id er med i, samt hvad de arbejder som i den film.
tabelnavn: film_join
kolonner: pers_id (dubletter for hver film de er med i)
film_id (svarer til en film i en tredje tabel)
actor (true or false)
director (true or false)
writer (true or false)
den sidste tabel er ikke nødvendig i denne sammenhæng.
her er mit foreløbige bud, distinct fjerner en del af mit problem men ikke alle.
SELECT DISTINCT j.pers_id, p.fname, p.lname, j.actor, j.director, j.writer
FROM film_pers p, film_join j
WHERE p.lname LIKE 'MMColParam%' AND j.pers_id = p.pers_id
ORDER BY lname
'MMColParam%' er bare fordi det er en søgning på hvad efternavnene starter med.
Når jeg laver denne forespørgsel på efternavne der starter med "E" dukker dette op:
pers_id - fname - lname - actor - director - writer
10667 Clint Eastwood true true false
10667 Clint Eastwood false true false
11221 Chris. Eccleston true false false
som i kan se er det ikke smart at der dukker to clint eastwood op, bare fordi han ikke laver nøjagtig det samme i de to film han er med i. jeg vil gerne have at den trækker dem sammen, så den ud for clint skriver alle de true ud for hans navn ved alle de erhverv(kolonner) han er med i (true). Håber i forstår og kan hjælpe, for det har drillet mig længe nu. Jeg kan sagtens selv klare den fra true og over til at skrive skuespiller og instruktør i stedet, men det andet kan jeg ikke. Måske skal der bruges inner join eller sum på en eller anden måde, men det kender jeg ikke så meget til.
