mysql> describe Movies;
+-------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+-------+
| MOVIE_ID | char(5) | NO | PRI | | |
| TITLE | varchar(100) | NO | | NULL | |
| RATING | varchar(3) | YES | | NULL | |
| GENRE | varchar(15) | YES | | NULL | |
| RELEASEDATE | char(4) | YES | | NULL | |
| ACTOR_ID | char(5) | NO | MUL | NULL | |
| ACTOR_ID_2 | char(5) | YES | MUL | NULL | |
| ACTOR_ID_3 | char(5) | YES | MUL | NULL | |
+-------------+--------------+------+-----+---------+-------+
mysql> describe Actors;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| ACTOR_ID | char(5) | NO | PRI | | |
| FNAME | varchar(40) | NO | | NULL | |
| LNAME | varchar(40) | NO | | NULL | |
+----------+-------------+------+-----+---------+-------+
首先,我知道我应该做了我的表不同,它是 不是很好的做法,actorId来,actorid2,actorid3,但是这是一个 组项目我的工作,和我一直无法更改 表。所以我试图让它工作。在查询:如何在加入另一个表时搜索表中的所有列?
select * from Movies join Actors on Actors.ACTOR_ID in (Movies.ACTOR_ID, Movies.ACTOR_ID_2, Movies.ACTOR_ID_3);
我参加所有的演员到电影,所以我知道哪名演员 的名字都在其中电影。我想要有一个搜索功能,用户可以搜索任何电影,流派或演员,并获取所有的 信息。所以我希望它弹出将 其中非亲兄弟电影存在的所有列
select * from Movies where 'Step Brothers' in (select * from Movies join Actors on Actors.ACTOR_ID in (Movies.ACTOR_ID, Movies.ACTOR_ID_2, Movies.ACTOR_ID_3));
亲兄弟当然是电影的标题:所以我做了这个查询。或者,如果他们搜索Will Ferrell的 (他是Step Brothers中的演员),那么Will Ferrell的明星将会弹出所有电影 。我该怎么做呢?当我执行
select * from Movies where 'Step Brothers' in (select * from Movies join Actors on Actors.ACTOR_ID in (Movies.ACTOR_ID, Movies.ACTOR_ID_2, Movies.ACTOR_ID_3));
我得到一个
Operand should contain 1 column(s)
但我从每个表中选择所有 列,以便他们应该列的相同数量, 吧?
'这是不好的做法有actorId来,actorid2,actorid3,'...你的直觉是正确的,你的桌子没有规范化,因此很难使用,除非你只打算包括三部电影,甚至不包括其他演员。 –
有没有办法让这张桌子工作?因为我打算修复它,但我希望将这个搜索功能实现到我的程序中进行测试。 – XXIV
是否要在两个表的所有列中搜索用户输入?你期望什么结果? –