我是SQL的新手,我在为一个场景编写查询时遇到了问题。我有3张桌子:
表1包含演员姓名和电影ID
Table1
Actor-ID Actor-name Movies_id
表2包含movie-id和相应的电影名称。
Table2
Movies_id Movies_name
表3包含电影ID和电影产生的相应收入。
Table3
Movies_id Revenue_generated
我想编写一个查询来获取以下场景的数据: 任何一位演员的电影都超过100 crores。
我没有在表格中提及任何数据,因此您可以随意添加数据。
答案 0 :(得分:0)
这会帮助你。
SELECT
A.Actor-name,B.Movies_name
FROM
table1 A INNER JOIN table2 ON
A.Movies_id= B.Movies_id
INNER JOIN table3 C ON
A.Movies_id= C.Movies_id
WHERE C.Revenue_generated > 10000000000
答案 1 :(得分:0)
数据:
DECLARE @ColName NVARCHAR(225) ,
@FieldID INT;
DECLARE columnCursor CURSOR
FOR
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'acc_Account'
AND TABLE_SCHEMA = 'dbo';
DECLARE @deleted_colmn INT;
DECLARE CurDB CURSOR
FOR
SELECT @deleted_colmn
FROM #Deleted;
OPEN columnCursor;
FETCH NEXT FROM columnCursor INTO @ColName;
WHILE ( @@FETCH_STATUS <> -1 )
BEGIN
--OPEN CurDB;
--FETCH NEXT FROM CurDB INTO @deleted_colmn;
SET @FieldID = ( SELECT TOP 1
FieldID
FROM fld_Field
WHERE fld_Field.FieldName = @ColName
);
SET @newvalue = ( SELECT TOP 1
@ColName
FROM Inserted
WHERE @ColName = @ColName
);
SET @oldvalue = ( SELECT TOP 1
@ColName
FROM Deleted
IF @newvalue <> @oldvalue
BEGIN
INSERT INTO dbo.utl_Audit_Trail_Field
( AuditTrailID ,
FieldID ,
OldValue ,
NewValue ,
CreatedDate ,
CreatedUserID ,
UpdatedDate ,
UpdatedUserID
)
VALUES ( @AuditTrailID , -- AuditTrailID - bigint
@FieldID , -- FieldID - bigint
@oldvalue , -- OldValue - nvarchar(1000)
@newvalue , -- NewValue - nvarchar(1000)
@CreatedDate , -- CreatedDate - datetime
@CreatedUserID , -- CreatedUserID - bigint
@CreatedDate , -- UpdatedDate - datetime
@CreatedUserID -- UpdatedUserID - bigint
);
END;
FETCH NEXT FROM columnCursor INTO @ColName;
END; WHERE @ColName = @ColName
);
查询:
INSERT [dbo].[Table1] ([Actor_ID], [Actor_Name], [Movies_ID]) VALUES
(1, N'A1', 2),
(2, N'A2', 1),
(3, N'A3', 3),
(3, N'A3', 4),
(2, N'A2', 6)
INSERT [dbo].[Table2] ([Movies_ID], [Movies_Name]) VALUES
(1, N'M1'),
(2, N'M2'),
(3, N'M3')
(4, N'M4'),
(5, N'M5'),
(6, N'M6')
INSERT [dbo].[Table3] ([Movies_ID], [Revenue_generated]) VALUES
(1, 50),
(2, 100),
(3, 150),
(4, 75),
(5, 120),
(6, 115)
将100替换为所需的值。
答案 2 :(得分:0)
您应该使用这些表重新设计数据库:
查询将是:
select *
from movie
where revenue > 1000000000
and movie_id in
(
select movie_id
from actor_movie
where actor_id = (select actor_id from actor where name = 'Bruce Willis')
);