我想知道,有没有可能创建一个表,我有一个表接受外键但可能有同一行的多个值.
例如:
Employee(id,name,skillid);
Skill(Skillid,skillname);
Run Code Online (Sandbox Code Playgroud)
这里是Employee的一个实例
Employee(311,"john", (01,02) );
Skill (01,Java); Skill (02,C++);
Run Code Online (Sandbox Code Playgroud)
我为表格实现了相同的制作主键(是,skillid)
但在一个案例中我有一张桌子:
create table Movie (Movie_ID varchar(5),
Cast varchar(5),
foreign key(Cast) references Person(Person_ID),
primary key(movie_id, Cast));
Run Code Online (Sandbox Code Playgroud)
和另一张表:
create table Awards (Award_Id varchar(5),
Person_Id varchar(5),
Movie_Id varchar(5),
Award_Name varchar(30),
Year number(4),
Organization_Id varchar(5),
primary key (Award_id,year,Organization_Id),
foreign key(Person_Id) references Person(Person_ID),
-- foreign key(Movie_ID) references Movie(Movie_ID),
foreign key(Organization_Id) references Organization(Organization_Id));
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我无法使用Movie_ID作为外键,因为它引用的表具有2个东西的组合作为其主键.我没有在奖项表中使用其中第二个属性.
有何提示如何实施?
我有一张这样的桌子
1 Mo1 4
2 Mo7 2
3 Mo3 2
4 Mo2 2
5 Mo9 2
6 Mo8 1
7 Mo6 1
8 Mo4 1
Run Code Online (Sandbox Code Playgroud)
我有上面的结果使用
select movie_id, count(*) cnt from review Group by movie_id order by cnt desc
Run Code Online (Sandbox Code Playgroud)
但是,如果我想列出cnt> 1的所有movie_id我的查询失败.
有没有办法得到你想要的结果?
我正在逐行读取文件并将每行添加到字符串中.但是,对于每一行,字符串长度增加1,我认为这是由于换行符所致.如何将其从复制中删除.
这是我的代码尝试做同样的事情.
if (inputFile.is_open())
{
{
string currentLine;
while (!inputFile.eof())
while( getline( inputFile, currentLine ) )
{
string s1=currentLine;
cout<<s1.length();
}
Run Code Online (Sandbox Code Playgroud)
[更新说明]我使用记事本++来确定我逐行选择的长度.所以他们显示了123,450,500,120,我的节目显示124,451,501,120.除最后一行外,所有line.length()都显示增加1的值.