我不知道如何从多个表中查询,而是使用一个“链接”表来指向它。我有一张“表演”表和一张“流派”表,我有一张“链接表”,其中有 show_id
以及 genre_id
. 连接到 id
在体裁和 id
在节目中。我的问题是,我不知道是否有可能收集 name
从genres表中选择我在同一个地方查询节目。
现在,这就是我要做的:
$query = $DB->query('SELECT * FROM shows');
while ($show = $query->fetch_assoc()) {
$get_genres = $DB->query('SELECT genre_id, show_id FROM shows_genres WHERE show_id = ' . $show['id']);
$allgenres = '';
while ($genre = $get_genres->fetch_assoc()) {
$genre_name = $DB->query('SELECT id, name FROM genres WHERE id = ' . $genre['genre_id'])->fetch_assoc();
$allgenres .= $genre_name['name'];
}
在“链接表”上,一个节目可能有多个流派,多个流派id行指向同一个节目id。
很乱,是吗?有没有办法从第一个查询中选择所有这些?
表格结构如下:
SHOWS: id, title, summary
SHOWS_GENRES: show_id, genre_id
GENRES: id, name, description
1条答案
按热度按时间qaxu7uf21#
您可以通过使用联接的单个sql语句执行此操作:
这将为每个流派返回一行,并以逗号分隔该流派中的节目列表:
如果您想要一个节目及其类型的列表,您可以使用: