MySQL - many to many

Dakle, imam tablicu film sa id i naziv, tablicu glumac sa id i ime i tablicu glumac_film koja bi trebala vezati glumca sa filmom, ona ima film_id i glumac_id. Film_id je id iz tablice film, a glumac_id je id iz tablice glumac.

film: id, naziv
glumac:id, ime
glumac_film: film_id, glumac_id (glumac_film.film_id=film.id, glumac_film.glumac_id=glumac.id)

Nadam se da ste skužili.

Kako to povezati da pored svakog filma ispiše glumce u filmu? Jel to neki join?

Hvala na pomoći!

Možeš dati primjer kakav rezultat želiš?

Pa, recimo film je Kum, a glumci su Robert De Niro i Al Pacino, pa Kum 2 isto, pa Miris žene, tu jue samo Al Pacino, pa film gdje je samo De Niro itd.

Dakle,

Kum - Robert De Niro, Al Pacino
Kum2 - Robert De Niro, Al Pacino
Miris žene - Al Pacino
Analiziraj ovo - Robert De Niro

Dakle, pored filma ispis glumaca u filmu.

To bi se dalo riješiti putem funkcije.

Nešto u ovom obliku:

CREATE FUNCTION dbo.vrati_niz
	(@film INT)
RETURNS VARCHAR(1024) AS  

BEGIN 
	DECLARE	@glumac_niz	VARCHAR(1024)
	SET @glumac_niz	= ''
 
	SELECT	@glumac_niz = @glumac_niz + g.IME + ', ' 
		FROM	GLUMAC_FILM gf, GLUMAC g
		WHERE	gf.GLUMAC_ID	= g.ID
		AND	gf.FILM_ID		= @film

	SET @glumac_niz = LTRIM(RTRIM(ISNULL(@glumac_niz, '')))
	IF LEN(@glumac_niz) > 0
		SET @glumac_niz = SUBSTRING(@glumac_niz, 1, LEN(@glumac_niz) - 1)

	RETURN @glumac_niz
END

Kada imaš gornju funkciju, select je jednostavan

SELECT f.NAZIV, dbo.vrati_niz(f.ID) GLUMCI
FROM FILM f

P.S. Ovo što sam napisao je za MS SQL. :slight_smile:

[quote=“trnac”]To bi se dalo riješiti putem funkcije.

Nešto u ovom obliku:

CREATE FUNCTION dbo.vrati_niz
	(@film INT)
RETURNS VARCHAR(1024) AS  

BEGIN 
	DECLARE	@glumac_niz	VARCHAR(1024)
	SET @glumac_niz	= ''
 
	SELECT	@glumac_niz = @glumac_niz + g.IME + ', ' 
		FROM	GLUMAC_FILM gf, GLUMAC g
		WHERE	gf.GLUMAC_ID	= g.ID
		AND	gf.FILM_ID		= @film

	SET @glumac_niz = LTRIM(RTRIM(ISNULL(@glumac_niz, '')))
	IF LEN(@glumac_niz) > 0
		SET @glumac_niz = SUBSTRING(@glumac_niz, 1, LEN(@glumac_niz) - 1)

	RETURN @glumac_niz
END

Kada imaš gornju funkciju, select je jednostavan

SELECT f.NAZIV, dbo.vrati_niz(f.ID) GLUMCI
FROM FILM f

P.S. Ovo što sam napisao je za MS SQL. :)[/quote]

Je, vidim da nije mysql, a kako to učiniti sa upitom u mysql, dakle bez funckije?

[quote=“Drago883”]Dakle, imam tablicu film sa id i naziv, tablicu glumac sa id i ime i tablicu glumac_film koja bi trebala vezati glumca sa filmom, ona ima film_id i glumac_id. Film_id je id iz tablice film, a glumac_id je id iz tablice glumac.

film: id, naziv
glumac:id, ime
glumac_film: film_id, glumac_id (glumac_film.film_id=film.id, glumac_film.glumac_id=glumac.id)

Nadam se da ste skužili.

Kako to povezati da pored svakog filma ispiše glumce u filmu? Jel to neki join?

Hvala na pomoći![/quote]

glumac_film: film_id, glumac_id - treba ti samo ovo.

select film_id,film_naziv,glumac_ime from film,glumac where glumac_film.film_id=film.id and glumac_film.glumac_id=glumac.id

nauči osnove sql-a.

[quote=“Lola”]glumac_film: film_id, glumac_id - treba ti samo ovo.

select film_id,film_naziv,glumac_ime from film,glumac where glumac_film.film_id=film.id and glumac_film.glumac_id=glumac.id

nauči osnove sql-a.[/quote]

Na ovaj način prikazuje sve glumce uz sve filmove.

[quote=“Lola”]glumac_film: film_id, glumac_id - treba ti samo ovo.

select film_id,film_naziv,glumac_ime from film,glumac where glumac_film.film_id=film.id and glumac_film.glumac_id=glumac.id

nauči osnove sql-a.[/quote]

Hvala na pomoći, upravo to i radim, uspio, nisam proslijedio id filma.

Hvala još jednom.


Copyright © 2020 WM Forum - AboutContact - Sponsored by: Mydataknox & Webmaster.Ninja