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
是否要在兩個表的所有列中搜索用戶輸入?你期望什麼結果? –