【问题标题】:how to join 2 tables , check if each element of 'em exist in the 3 table and represent it as a number如何加入 2 个表,检查 'em 的每个元素是否存在于 3 个表中并将其表示为一个数字
【发布时间】:2016-02-13 07:20:18
【问题描述】:

我有这 3 张桌子: 1.电影

movie_id  title
  1     Toy Story (1995)
  2     Jumanji (1995)
  3     Grumpier Old Men (1995)

2.流派

 genre_id   genre
    1      Action
    2      Adventure
    3      Animation

3.movi​​es_genre

 m_g_id  movie_id   genre_id
      1     1       2
      2     2       1
      3     2       2
      4     3       1
      5     3       2
      6     3       3

我正在寻找这个:如果movies_genre 中存在具有特定类型的电影,则value=1,否则value=1

movie_id    genre     value
   1        Action     0
   1        Adventure  1
   1        Animation  0
   2        Action     1
   2        Adventure  1
   2        Animation  0
   3        Action     1
   3        Adventure  1
   3        Animation  0

为了将 movies 的每个元素与 gender 的所有元素连接起来,我使用下面的查询,但是我不知道如何获得具体的价值?

SELECT movie_id,genre
FROM movies, genres 
Order by movie_id

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    您需要使用cross joinouter join。然后您可以使用case 语句来获取value

    select m.movie_id,
      g.genre_id, 
      case when mg.m_g_id is null then 0 else 1 end 
    from movies m 
      cross join genres g 
      left join movies_genre mg on m.movie_id = mg.movie_id 
                               and g.genre_id = mg.genre_id
    

    【讨论】:

      猜你喜欢
      • 2022-01-06
      • 2020-02-11
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多