Подзапросы по подзапросам

я пытаюсь создать оператор выбора

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

лучше сказать, клиент выбирает из выпадающего списка город и категорию для этого города. Когда клиент нажимает кнопку «Далее», отображаются различные места в этом городе, которые соответствуют этой категории. Но я могу'не могу понять, где яЯ иду не так.

теперь, когда клиент выбирает город, для каждого города есть две записи: правильный код города и код почтового ящика сЬх» как первые буквы

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

select c.[Description] from city c 
where c.Provincecode like 'EC' and 
      c.citycode in (select c.citycode from City c 
                     where SUBSTRING(c.citycode,0,3) not like 'bx')

это дает мне одно название города.

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

но, как я могу, я могуне получить правильный синтаксис

мы пробовали:

select c.[Description] from city c 
where c.Provincecode like 'EC' and 
      c.citycode in (select c.citycode from City c 
                     where SUBSTRING(c.citycode,0,3) not like 'bx') 
      and exists (select * from Customers cu 
                  where cu.Category like 'SC' and cu.Province like 'EC')

но это приносит больше результатов, чем ожидалось

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

так что, если кто-то может предоставить ответ SQL, я могу сделать все остальное я

я не уверен, если яЯ должен сделать соединение. Я попробовал

select * from 
(select c.[Description] from city c 
 where c.Provincecode like 'EC' and 
       c.citycode in (select c.citycode from City c 
                      where SUBSTRING(c.citycode,0,3) not like 'bx')) x 
join Customers on  province=city.provincecode where Category like 'SC'

но я получаю ошибки для многокомпонентного идентификатора не может быть связано

РЕДАКТИРОВАТЬ

это новый запрос

select * 
from 
    (
        select c.* 
        from city c 
        where c.Provincecode like 'EC' 
            and c.citycode in
                (
                    select c.citycode 
                    from City c 
                    where SUBSTRING(c.citycode,0,3) not like 'bx'
                )
    ) x 
    join 
    Customers  
        on  province=x.Provincecode 
where Category like 'SC'

что возвращается

Как вы можете видеть, слишком много посетителей имеют C-Strydom в качестве клиента, но все города есть

для этого конкретного примера должна быть показана только одна запись, вторая

 Nicholas Aysen14 июн. 2013 г., 16:03
извиняюсь. нет. только таблица клиентов имеет категорию. аналогичные поля, которые разделяют таблицы - это провинция / код, который будет JBay в обеих таблицах
 Nicholas Aysen14 июн. 2013 г., 13:12
нет. если бы я неЯ не буду использовать отчет, из приведенного выше примера я получу 12 записей. только один правильный. но где-то пункт возвращает все записи. конечно, использование различных исключит лишние дополнения, но для будущего использования я бы хотел посмотреть, что вызывает лишние. Мне нужно поместить где-то подобное предложение, просто могуместо где
 Gord Thompson14 июн. 2013 г., 16:21
... так что, может быть, вам нужно что-то подобное?... ) x INNER JOIN Customers ON Customers.province=x.Provincecode AND Customers.city=x.Citycode ...
 Gord Thompson14 июн. 2013 г., 12:38
В вашем последнем запросе условие JOIN включаетcity.provincecode ноcity не в игре: это JOIN находится междуCustomers таблица и производная таблица вы 'псевдоним как.x
 Gord Thompson14 июн. 2013 г., 16:34
Я отправил свой ответ. Рад слышать это'работает.
 Gord Thompson14 июн. 2013 г., 13:17
Вы можете получить лучшую помощь, если выредактировать Ваш вопрос, чтобы показать некоторые репрезентативные примеры данных, обновленную версию вашего запроса, что он возвращает, и каков ваш желаемый результат.
 Nicholas Aysen14 июн. 2013 г., 13:56
обновлено. пока спасибо за помощь
 Nicholas Aysen14 июн. 2013 г., 12:51
как я могу уточнить это оттуда? (извините за опечатку в предыдущем комментарии)
 Nicholas Aysen14 июн. 2013 г., 12:51
Хорошо. Я изменил выбор c. {Description] на c. *, Сказал x.Provincecode (извлечено из таблицы) и вроде работал. Отличный даст мне один, без, я получаю 12 результатов.
 Gord Thompson14 июн. 2013 г., 15:52
Хорошо, теперь яЯ в замешательстве, потому что второй запрос в вашем вопросе пытается отфильтроватьcu.Category like 'SC' гдеcu это псевдоним дляCustomers, Так что обаCity иCustomers столы имеютCategory столбцы, и могут ли они оба содержатьSC '?
 Gord Thompson14 июн. 2013 г., 15:17
Что делает 'JBay» "правильный ответ"?
 Nicholas Aysen14 июн. 2013 г., 16:29
идеально. работает. сделать ответ так что сделано
 Nicholas Aysen14 июн. 2013 г., 15:42
в БД это единственная запись для поля провинция / код ЕС, имеющая категорию SC. все остальные в результатах должны иметь G H в качестве своих категорий. Итак, JBay должен быть правильным выбором
 Gord Thompson14 июн. 2013 г., 13:08
Это'Трудно сказать без каких-либо репрезентативных выборочных данных или другой дополнительной информации. Звучит как тыВы хотите вернуть одну запись, и (я думаю) вы сказали, что добавлениеDISTINCT вернул одну запись, так что это была не та?

Ответы на вопрос(2)

вы знаете больше фактических столбцов, которые вы действительно хотите, я оставляю это вам. Запрос должен быть простым, так как вы в первую очередь смотрите на "Город" таблица для конкретного кода провинции, но неначать с "BX», Просто имейте это в своем предложении where ... вы можете протестировать несколько вещей о записи, не присоединяясь к себе по некоторым другим критериям. Как только вы это сделаете, просто присоединитесь к таблице клиентов для категории, которую вы ограничиваете.

select *
   from 
      city c 
         JOIN Customers CU
            on c.ProvinceCode = CU.Province
           AND CU.Category like 'SC'
   where 
          c.ProvinceCode like 'EC' 
      and NOT substr( c.CityCode,0,3 ) = 'bx'

Теперь у вас выпуск нескольких записей на одного клиента. Если все, к чему вы присоединяетесь, это код провинции в таблице клиентов, вы получите декартово результат ... но если вы присоединитесь к ProvinceCode И городу клиента, вы 'Я получу только один, который соответствует ... но мы нене иметь подробностей таблицы клиентов для подтверждения этой связи столбца.

Решение Вопроса

вопросу). Сработал запрос

select * 
from 
    (
        select c.* 
        from city c 
        where c.Provincecode like 'EC' 
            and c.citycode in
                (
                    select c.citycode 
                    from City c 
                    where SUBSTRING(c.citycode,0,3) not like 'bx'
                )
    ) x 
    INNER JOIN 
    Customers 
        ON Customers.province=x.Provincecode 
            AND Customers.city=x.Citycode 
where Category like 'SC'
 Nicholas Aysen14 июн. 2013 г., 16:36
Спасибо. Теперь для меня, чтобы преобразовать это для доступа к языку ...

Ваш ответ на вопрос