3

我正在使用以下数据库模型

在此处输入图像描述

一位客户要求我对他们的数据库进行一些更改,我已经有几年没有玩过关系数据库了,通常使用平面数据库

有人可以帮我举个例子,说明以下查询是如何工作的。

说如果我想

选择某个流派ID下标题为“%Matrix%”的所有电影

任何帮助将不胜感激

4

5 回答 5

8

使用 aninner join连接三个表

SELECT F.title 
FROM   film F 
       INNER JOIN filmgenres FG 
               ON F.filmid = FG.film_filmid 
       INNER JOIN genres G 
               ON FG.genres_genreid = G.genreid 
WHERE  F.title LIKE '%Matrix%' AND G.genre = "Some Genre"
于 2013-04-16T14:40:24.437 回答
3

你需要先加入表格,

SELECT  a.*, c.Genre
FROM    Film a
        INNER JOIN FilmGenres b
            ON a.FilmID = b.Film_FilmID
        INNER JOIN Genres c
            ON b.Genre_GenreID
WHERE   a.Title LIKE '%matrix%'

要进一步了解有关联接的更多信息,请访问以下链接:

但是如果你想搜索特定的流派,那么你也可以添加一个条件,

SELECT  a.*, c.Genre
FROM    Film a
        INNER JOIN FilmGenres b
            ON a.FilmID = b.Film_FilmID
        INNER JOIN Genres c
            ON b.Genre_GenreID
WHERE   a.Title LIKE '%matrix%' AND c.GenreID = 10
于 2013-04-16T14:40:52.207 回答
3
SELECT Film.*
FROM Film f
JOIN FilmGenres fg ON g.Film_FilmID = f.FilmID
WHERE fg.Genres_GenreID = 3
AND Title LIKE '%Matrix%'
于 2013-04-16T14:41:22.113 回答
1

这是一个非常简单的连接:

select
    Film.*
from
    Film
inner join FilmGenres on
    Film.FilmID = FilmGenres.Film_FilmID
where
    Film.Title like "%Matrix%" and
    FilmGenres.Genres_GenreID = ?
于 2013-04-16T14:42:13.410 回答
1
SELECT * FROM Film INNER JOIN FilmGenres ON Film.FilmID = FilmGenres.Film_FilmID
    WHERE FilmGenres.Genres_GenreID = 1 
          AND
          Film.Title like '%Matrix%'
于 2013-04-16T14:45:02.557 回答