как запросить доступ для выбора целых записей по определенным критериям

#sql #ms-access-2007

#sql #ms-access-2007

Вопрос:

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

 SELECT DISTINCT Customer.promo1 FROM Customer AS promo;

SELECT * FROM Customer, promo
WHERE Customer.promo1 = promo.promo1;
  

Но это, очевидно, дает исходную таблицу. У меня есть поле идентификатора, называемое AutoID в Customer.

Заранее спасибо.

Ответ №1:

Я предполагаю, что вы хотите первого клиента.Автоматический поиск, связанный с каждым клиентом.Промо

 SELECT
    c.*
FROM
    Customer  c 
    INNER JOIN 
    (

    SELECT 
        c.promo1,
        MIN(c.AutoID) AutoID
    FROM 
        Customer  c
    GROUP BY
        c.promo1) FirstCusomterWithPromo
    ON c.AutoID = FirstCusomterWithPromo.AutoID
  

Комментарии:

1. распознает ли access 2007 функцию MIN()?

2. @Kyle Да, вот список агрегатных функций, поддерживаемых Access SQL

Ответ №2:

Что-то вроде этого:

 SELECT * FROM Customer
GROUP BY Customer.promo1 
  

Комментарии:

1. Доступ, подобный большинству баз данных (MySQL является заметным исключением), не позволит вам написать группу подобным образом. Вам нужно будет включить любое неагрегированное поле в предложение group by. Я также почти уверен, что это не то, чего хотел OP.

2. Вы не так уверены, если решили прокомментировать мой ответ, чтобы защитить свой 😉