加入具有多对多关系的多个表

时间:2011-08-03 18:22:43

标签: php mysql join left-join

我有大约30张桌子。例如:与电影有关的制片人,导演等

每个表都包含movie_id和celeb_id字段

有一个表名人,其中包括字段:celeb_id celeb_name

对于特定的movie_id,我希望在单个查询中检索所有信息。

SELECT b_movies.*, bb_celebs.celeb_name 
FROM b_movies
LEFT JOIN b_producer ON b_movies.id = b_producer.movie_id 
LEFT JOIN bb_celebs ON b_producer.celeb_id = bb_celebs.celeb_id
LEFT JOIN b_director ON b_movies.id = b_director.movie_id 
LEFT JOIN bb_celebs ON b_director.celeb_id = bb_celebs.celeb_id
WHERE b_movies.id = 'UNIQUE ID';

我想要与工作类型相关的明星名字:

Director
1. ABC
2. XYZ

Producer
1. ABC2
2. XYZ2

所有明星名字都与celeb_id和celeb_name一起存储在明星表中 并且在生产者表movie_id和celeb_id中,相同的结构适用于董事等。所有其他表

请帮忙。

此致

Kenh

2 个答案:

答案 0 :(得分:1)

SELECT ...
FROM ...
LEFT JOIN ... ON ...
WHERE ...
ORDER BY ...

...的适当值留作OP的练习......

答案 1 :(得分:0)

(在c.celeb_id = d.celeb_id和d.movi​​e_id =“movie_id”中选择'导演',来自celebs c的celeb.name加入导演d)

联合所有

(从celebs c中选择'Producer',celeb.name,在c.celeb_id = p.celeb_id上连接producer p,p.movi​​e_id =“movie_id”)

联合所有人 .....