Подзапросы SQL - в каком порядке вы выполняете операторы SELECT? - PullRequest
1 голос
/ 20 июня 2011

Я только начал изучать 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

Извините, этот код, вероятно, действительно испорчен. Пожалуйста, помогите, если можете.

Ответы [ 2 ]

2 голосов
/ 20 июня 2011

Когда вы используете две таблицы, вы должны использовать синтаксис INNER JOIN: http://w3schools.com/sql/sql_join_inner.asp

    SELECT Ethnicity, COUNT(Referral)
    FROM Demographics INNER JOIN Marketing
    ...
    AND Referral = 'website'
    AND Gender = 'Female'
    ...
2 голосов
/ 20 июня 2011

Из того, что вы описали, вам не нужен подзапрос:

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

... обратите внимание, что это дает вам другой набор результатов, чем тот, который вы показывали, хотя, с учетом этнической принадлежности, рассчитывайте на каждую строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...