编写复杂的mysql查询

编写复杂的mysql查询,mysql,Mysql,数据库需要跟踪网站注册用户的信息以及他们上传、观看和评分的视频。每个上传的视频都被放入一组预定义的内容类别中。用户可以多次观看同一视频;他们可能会在每次观看视频时对其进行不同的评分,或者根本不评分 为了赚钱,视频共享服务依赖于广告收入。当用户观看视频时,通常(但并非总是)会在视频开始前向他们显示广告。任何用户都可以创建一个广告,并支付固定的总价,使其显示指定的次数(需要的浏览次数)。广告商可以通过为其广告指定一个或多个内容类别,将其广告瞄准具有相关兴趣的用户;广告更有可能与选定类别的视频一起播放

数据库需要跟踪网站注册用户的信息以及他们上传、观看和评分的视频。每个上传的视频都被放入一组预定义的内容类别中。用户可以多次观看同一视频;他们可能会在每次观看视频时对其进行不同的评分,或者根本不评分

为了赚钱,视频共享服务依赖于广告收入。当用户观看视频时,通常(但并非总是)会在视频开始前向他们显示广告。任何用户都可以创建一个广告,并支付固定的总价,使其显示指定的次数(需要的浏览次数)。广告商可以通过为其广告指定一个或多个内容类别,将其广告瞄准具有相关兴趣的用户;广告更有可能与选定类别的视频一起播放。出于会计和统计目的,数据库跟踪何时显示广告以及用户是否单击广告

一些上传了许多高质量视频的多产用户可能会被邀请加入收入分享合作伙伴关系,他们从上传视频上显示的广告中获得的收入只是收入的一小部分

我在MySql中创建了以下数据库:

使用者 (用户名、密码、姓名、电子邮件、注册日期)

录像带 (视频id、标题、上传人、上传地点、类别)

广告 (广告id、广告商、价格、所需浏览量)

广告目标类别 (广告标识,类别)

观点 (用户、视频、浏览、分级、显示广告、点击广告)

合伙人 (用户名、收入和份额)

我已经使用SQL语句创建了数据库:

create table Users
(
username varchar(400) not null,
password varchar(400) not null,
name varchar(400) not null,
email varchar(400) not null,
date_registered date,
primary key(username)
);

create table Videos
(
video_id varchar(400) not null,
title varchar(400) not null,
uploaded_by varchar(400) not null,
uploaded_at varchar(400) not null,
category varchar(400) not null,
primary key(video_id),
foreign key(uploaded_by) references Users(username)
);

create table Advertisements
(
ad_id varchar(400) not null,
advertiser varchar(400) not null,
price varchar(400) not null,
views_wanted varchar(400) not null,
primary key(ad_id),
foreign key(advertiser) references Users(username)
);

create table Ad_Target_Categories
(
ad_id varchar(400) not null,
category varchar(400) not null,
primary key(ad_id,category),
foreign key(ad_id) references Advertisements(ad_id)
);

create table Views
(
user varchar(400) not null,
video varchar(400) not null,
viewed_at varchar(400) not null,
rating varchar(400) not null,
ad_shown varchar(400) not null,
ad_clicked varchar(400) not null,
primary key(user,video,viewed_at),
foreign key(user) references Users(username),
foreign key(video) references Videos(video_id)
);

create table Partners
(
username varchar(400) not null,
revenue_share varchar(400) not null,
primary key(username),
foreign key(username) references Users(username)
);
0)列出广告ID、广告商姓名和每个广告的电子邮件,CPM(每千年成本,每千次浏览的价格)不到7美分

这个查询正确吗

select *from ad_id,advertiser,email
from advertisements,users
where price <0.07;
从广告id、广告客户、电子邮件中选择*
从广告、用户
在价格> P >回答你的问题“这个查询是正确的”,我注意到查询根本不会运行,因为有一个额外的卡在中间。< /P>
一旦运行它,确定它是否正确的技术将是在表中插入一组行(例如,10或20),这些行包含您可以想到的每种边缘情况(大于数量,小于数量,正好等于数量),以便您提前知道返回的正确行集是什么。然后,运行查询并与预期输出进行比较


我还建议您多考虑一下列数据类型,而不是将它们全部设置为VARCHAR。您将看到有几种类型更适合存储金额。使用VARCHAR,您可能会得到一些产生错误结果的比较异常

简单地说明你的要求并不构成真正的问题。为什么要有人为你工作?(免费吗?)恐怕你把这个协作网站与DoMyWork.com或ICantBeBothered.net混淆了。请阅读这个网站的常见问题解答()以更好地了解适合这个论坛的问题类型。你注册了这些问题,不是吗:)