Не знаете, как выполнить этот запрос. Не знаю, как назвать этот тип запроса, пожалуйста, исправьте этот заголовок!

Предполагается, что этот запрос будет выполняться с помощью MS Access 2003 с использованием SQL. функция JOIN НЕ поддерживается явно. неявно в предложении WHERE в порядке... неявность в любом месте в порядке, пока не используется слово JOIN INNER JOIN Etc.

     DayNumnber   PastTime
               .
               .
               .

       333           Homework
       333           TV
       334           Date
       620           Chores
       620           Date
       620           Homework
       725           Chores
       725           Date
       888           Internet
       888           TV
                  .
                  .
                  .

Эй, я хотел бы запрос, который может показать самое важное прошедшее время, сделанное за каждый день (ТВ и Интернет не в счет!). Таким образом, важностью будет Домашняя работа> Домашние дела> Дата. Итак:

       DayNumber     PastTime
         333           Homework
         334           Date
         620           Homework
         725           Chores

Что-то, что может изменить эту проблему. Хотя все разные прошлые разы слушаются в таблице вместе. но это было потому, что я добавил таблицу. изначально домашние задания. рутинные записи и записи даты. интернет записи. телевизионные записи. пришли с разных столов.

 eg     homework 333
        homework 620

Легче ли это сделать, не добавляя сначала эти таблицы? Я бы хотел, чтобы это было сделано с добавленной таблицей, но я

Я думал о смеси вставки. удалить... но самое сложное - это проверить, есть ли там что-то для свидания, несколько дел и как поставить более важное дело, сделанное в этот день. Спасибо


person Chaostryder    schedule 22.07.2011    source источник
comment
Домашнее задание? Там есть тег «Домашнее задание», который может помочь вам.   -  person Mike Sherrill 'Cat Recall'    schedule 22.07.2011
comment
Ваш первый абзац предполагает, что вы считаете, что Access 2003 SQL не поддерживает операторы JOIN. Это ваше мнение, или я неверно истолковал то, что вы сказали? Он поддерживает INNER JOIN, LEFT JOIN и RIGHT JOIN.   -  person HansUp    schedule 22.07.2011
comment
@HansUp, вы правильно прочитали, я думал, что он поддерживает это, но затем всякий раз, когда я использовал соединение явно, на самом деле произносил слово «соединение», оно выдавало мне сообщение об ошибке, говорящее, что формат соединения не поддерживается, или это выражение или функция не поддерживаются, я не совсем помню один из них. Я не уверен, это просто версия, которая у меня на работе, или я не знаю =/ на самом деле очень хотел бы знать o.o   -  person Chaostryder    schedule 23.07.2011
comment
@Catcall, спасибо за предложение, на самом деле это не ручная работа, хотя, лол   -  person Chaostryder    schedule 23.07.2011
comment
Если вы, @Chaostryder, также являетесь пользователями Stack Overflow Лиззи и Лиззи Чоу, я думаю, что путаница могла возникнуть из-за одного из ваших предыдущих вопросов. JOIN не сработал, но не потому, что Access не поддерживает соединения. Скорее, была другая проблема с конкретным оператором SQL, который вы пробовали в качестве соединения. Не отказывайтесь от участия! Отправьте еще один вопрос с простым конкретным примером того, что объединение не работает для вас, и мы, вероятно, сможем понять, почему.   -  person HansUp    schedule 23.07.2011
comment
Вы пытались создать JOIN в конструкторе запросов доступа? Он получит правильный синтаксис для вас, а затем вы сможете взять SQL и делать с ним то, что хотите (пока вы оставляете синтаксис JOIN в покое).   -  person David-W-Fenton    schedule 23.07.2011
comment
@HansUp хорошо, спасибо за поддержку. я сделаю это сразу после того, как закончу свою другую работу, я добился прогресса за последние два дня   -  person Chaostryder    schedule 23.07.2011
comment
@ David-W-Fenton, лол, я впервые в жизни начал работать над доступом примерно... два дня назад ›.› и, на удивление, научился работать с SQL лучше, чем когда запрос находится в стадии разработки. Я до сих пор не очень привык к такой логике. но вы правы, это бы исправило соединение, и мне не пришлось бы делать что-либо с SQL, а что нет. Я думаю, это то, о чем ты говоришь, верно?   -  person Chaostryder    schedule 23.07.2011
comment
Да — начните с QBE в Access. Вы часто не можете достичь желаемого конечного результата, но, по крайней мере, вы начнете с SQL, который, как вы знаете, имеет правильный синтаксис.   -  person David-W-Fenton    schedule 25.07.2011


Ответы (1)


Создайте еще одну таблицу с:

Pri | PastTime
--------------
  1 | Homework
  2 | Chores
  3 | Date

Это приоритетный список предметов.

Далее делаем:

  SELECT MIN(Pri), DayNumber
    FROM PastTime_table, Priority_table
   WHERE PastTime_table.PastTime = Priority_table.PastTime
GROUP BY DayNumber

Это даст вам самое важное прошедшее время на каждый день. А поскольку ТВ и Интернета нет в списке, они не появятся.

Но он даст вам номер, а не имя.

Если бы у вас был лучший SQL, вы могли бы присоединиться к нему обратно в Priority_table и найти имя. Но я думаю, вам придется сделать эту часть вручную.

Если вы готовы изменить имя и позвонить им:

A_Homework
B_Chores
C_Date

вместо этого вы могли бы сделать (без дополнительной таблицы):

  SELECT MIN(PastTime), DayNumber
    FROM PastTime_table
GROUP BY DayNumber

Поскольку он сортирует имя в алфавитном порядке, он всегда даст вам лучшее.

Вы можете добавить WHERE для удаления ТВ и Интернета.

person Ariel    schedule 22.07.2011