0

我正在创建两个表。表 1 具有以下架构

user_id       int            not null,autoincrement
movie _id     int            not null 
movie_name    varchar        
user_name     varchar
rating        int
genre         varchar

user_Id    movie_Id    movie_name  user_name   rating  genre
1           1           Twister    Alex          6      Drama
2           !           Twister    Tim           1      Drama
(contd..)

而表 2 具有以下架构

movie _id     int            not null 
movie_name    varchar        
user_name     varchar
genre         varchar

movie_Id   movie_Name    user_name   genre
2          Harry Porter  Alex        Fantay
3          Narnia        Alex        Fantasy
..
...(contd)

现在,当我查询插入值时,它首先检查第一个表中是否存在以下用户名。如果为真,则插入第二个表,否则根据模式将值插入第一个表。换句话说,第一个表具有唯一的用户名和唯一的user_Id 而 second 包含许多重复的用户名和他们看过的电影

现在我想加入表 1 和表 2 ,以便它包含两个表的所有列以及 user_name 的唯一 user_Id 以及他们看过的电影并按流派评分

例如

user_id   movie_Id  movie_name   user_name   rating  genre
1         1         Twister       Alex        6      Drama
1         2         Harry Porter  Alex        7      Fantasy
1         3         Narnia        Alex        6      Fantasy
2         1         Twister       Tim         1      Drama

... 等等

谢谢

4

2 回答 2

2
SELECT table1.user_id, table2.* 
FROM table2 
INNER JOIN table2
    ON table2.user name = table1.user_name

但是,您应该像这样构建数据库:

table_users:
    user_id
    username
    ...

table_videos:
    video_id
    video_name
    video_genre
    ...

table_rentals
    record_id
    user_id 
    video_id

然后使用这样的结构,您将使用以下 SQL 查询:

SELECT table_users.user_id, table_users.username, table_videos.video_id, table_videos.video_name 
FROM table_videos 
INNER JOIN table_rentals 
     ON table_rentals.video_id = table_videos.video_id
INNER JOIN table_users 
     ON table_rentals.user_id = table_users.user_id 

这更加规范化,并减少了重复数据

于 2013-05-17T10:41:50.327 回答
0

试试这个

select * from table2 inner join table1 on table2.user_id= table1.user_id
于 2013-05-17T10:36:56.080 回答