Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL子查询-执行SELECT语句的顺序是什么?_Sql_Database - Fatal编程技术网

SQL子查询-执行SELECT语句的顺序是什么?

SQL子查询-执行SELECT语句的顺序是什么?,sql,database,Sql,Database,几天前我刚刚开始学习SQL,我正在尝试理解在构建子查询时应该使用SELECT语句的顺序。下面是一个简单的例子,说明我正在努力实现的目标 我有两个表格——一个是客户名单的人口统计数据,另一个是详细说明他们是如何了解我们公司的 在第一个表格中,我的客户在性别栏中被列为男性或女性,然后在下一个栏中,他们的种族被指定(高加索人、非裔美国人、西班牙裔等) 在第二个表格中,有一个推荐栏,指定他们是如何了解我们公司的(电视、广播、网站等) 我想先按性别筛选客户(我只想显示女性数据),然后我想统计一下表中列出的

几天前我刚刚开始学习SQL,我正在尝试理解在构建子查询时应该使用SELECT语句的顺序。下面是一个简单的例子,说明我正在努力实现的目标

我有两个表格——一个是客户名单的人口统计数据,另一个是详细说明他们是如何了解我们公司的

在第一个表格中,我的客户在性别栏中被列为男性或女性,然后在下一个栏中,他们的种族被指定(高加索人、非裔美国人、西班牙裔等)

在第二个表格中,有一个推荐栏,指定他们是如何了解我们公司的(电视、广播、网站等)

我想先按性别筛选客户(我只想显示女性数据),然后我想统计一下表中列出的每个种族的客户通过我们的网站找到我们的次数

SELECT Ethnicity, COUNT(Referral)
FROM Demographics, Marketing
WHERE Demographics.id = Marketing.source_id
AND Referral = 'website'
/* confused about how to put subquery here saying Gender = 'Female' */
ORDER BY Ethnicity
基本上,我对如何正确地包含子查询以及是否按正确的顺序进行过滤感到困惑

但我希望我的桌子是这样的:

/*Data is shown for ONLY Females */

Referral        Caucasian     African American       Hispanic      Asian

website          7             19                     14            22

对不起,这个代码可能真的搞错了。如果可以,请提供帮助。

根据您的描述,您不需要子查询:

SELECT Ethnicity, COUNT(Referral)
FROM Demographics, Marketing
WHERE Demographics.id = Marketing.source_id
AND Referral = 'website'
AND Gender = 'Female'
ORDER BY Ethnicity

…请注意,这将为您提供一个与您显示的结果集不同的结果集,但是,对于每一行,使用种族计数。

根据您的描述,您不需要子查询:

SELECT Ethnicity, COUNT(Referral)
FROM Demographics, Marketing
WHERE Demographics.id = Marketing.source_id
AND Referral = 'website'
AND Gender = 'Female'
ORDER BY Ethnicity

…请注意,这将为您提供一个不同于您显示的结果集,但是,对于种族,每行计数。

当您使用两个表时,您必须使用内部联接语法:
http://w3schools.com/sql/sql_join_inner.asp

    SELECT Ethnicity, COUNT(Referral)
    FROM Demographics INNER JOIN Marketing
    ...
    AND Referral = 'website'
    AND Gender = 'Female'
    ...

使用两个表时,必须使用内部联接语法:
http://w3schools.com/sql/sql_join_inner.asp

    SELECT Ethnicity, COUNT(Referral)
    FROM Demographics INNER JOIN Marketing
    ...
    AND Referral = 'website'
    AND Gender = 'Female'
    ...

几乎被否决-我完全同意ANSI连接语法几乎是必须的-我自己肯定不会使用老式语法-但与wrt无关。没问题,我没有注意到你回答中的
和Gender=…
,所以要投反对票有点困难!你应该把'must'改为'should','u'改为'you'。几乎被否决了-我完全同意ANSI连接语法几乎是必须的-我自己肯定不会使用老式语法-但与wrt无关。没问题,我没有注意到你回答中的
和Gender=…
,所以要投反对票有点困难!您应该将“must”更改为“should”,将“u”更改为“you”。执行联接而不是子查询。执行联接而不是子查询。