57 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			MySQL
		
	
	
	
	
	
		
		
			
		
	
	
			57 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			MySQL
		
	
	
	
	
	
|   | --
 | ||
|  | -- Set up a many-to-many relationship between tables (mini)series and eps
 | ||
|  | -- -----------------------------------------------------------------------------
 | ||
|  | --
 | ||
|  | 
 | ||
|  | --
 | ||
|  | -- Table structure for the mapping table 'series_eps'
 | ||
|  | --
 | ||
|  | DROP TABLE IF EXISTS series_eps;
 | ||
|  | CREATE TABLE IF NOT EXISTS series_eps (
 | ||
|  |     series_id int(5) NOT NULL
 | ||
|  | 	REFERENCES miniseries(id),
 | ||
|  |     eps_id int(5) NOT NULL
 | ||
|  | 	REFERENCES eps(id),
 | ||
|  |     PRIMARY KEY series_eps_pk (series_id,eps_id)
 | ||
|  | ) ENGINE=InnoDB;
 | ||
|  | 
 | ||
|  | SHOW warnings;
 | ||
|  | 
 | ||
|  | --
 | ||
|  | -- Make a view to simplify access to eps and (mini)series. This simply
 | ||
|  | -- joins the two tables through the 'series_eps' table. Some fields need
 | ||
|  | -- renaming to avoid clashes.
 | ||
|  | --
 | ||
|  | DROP VIEW IF EXISTS eps_with_series;
 | ||
|  | CREATE VIEW eps_with_series AS
 | ||
|  |     SELECT
 | ||
|  | 	e.id AS eps_id,
 | ||
|  | 	e.date,
 | ||
|  | 	e.title,
 | ||
|  | 	e.duration,
 | ||
|  | 	e.summary,
 | ||
|  | 	e.notes,
 | ||
|  | 	e.hostid,
 | ||
|  | 	e.explicit,
 | ||
|  | 	e.license,
 | ||
|  | 	e.tags,
 | ||
|  | 	e.version,
 | ||
|  | 	e.downloads,
 | ||
|  | 	e.valid AS eps_valid,
 | ||
|  | 	ms.id AS series_id,
 | ||
|  | 	ms.name,
 | ||
|  | 	ms.description,
 | ||
|  | 	ms.private,
 | ||
|  | 	ms.image,
 | ||
|  | 	ms.valid AS series_valid
 | ||
|  |     FROM eps e
 | ||
|  |     JOIN series_eps se ON (e.id = se.eps_id)
 | ||
|  |     JOIN miniseries ms ON (ms.id = se.series_id)
 | ||
|  |     ORDER BY e.id, ms.id;
 | ||
|  | 
 | ||
|  | SHOW warnings;
 | ||
|  | 
 | ||
|  | /*
 | ||
|  | vim: syntax=sql ai tw=75:
 | ||
|  | */
 |