2013-11-25 3 views
0

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

У меня есть база данных, которая включает в себя таблицу ANSWERS, заполненную входом для пользователей, «хочет», есть несколько столбцов, каждая из которых соответствует ответу на другой вопрос, спрашивая, не нужны ли они, «Не заботьтесь, хотите или что-то».

EG: Ответы:

Bacon | Ham | Sausage 
    ________________________________ 
1  0  0   2 
2  2  1   0 
3  0  2   0 
4  1  1   1 

(0 = пофиг, 1 = Хотите, 2 = потребность)

Я хочу, чтобы сравнить строки из таблицы Ответы на Доступные таблицы.

EG: В наличии:

Bacon | Ham | Sausage 
    ________________________________ 
1 0  1   0 
2 0  0   0 
3 1  1   1 
4 1  1   0 

(0 = Недоступно, 1 = Available)

Так что я хотел бы сравнить строку 1 из ответов Доступна так потому, что ряд 1 включает в себя колбасу = 2, то Я хотел бы получить строку 3 из «Доступно», потому что колбаса = 1.

Я был бы рад получить всю строку, или идентификатор строки, и «1» для соответствия строк.

В конечном счете, мне нужно будет сделать это для всех строк в ответах.

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

Большое спасибо

Edit: Не Заботиться ранее не хотят. Изменено для ясности.

+0

У меня возникли проблемы с мыслью о том, что кто-то выбрал вариант «Не хочу» для [Бэкона]. ;) –

+1

Я с Гордом. Но Бэкон в сторону, может быть полезным больше объяснений - я подозреваю, что ваша структура данных работает против вас. Например, Бэкон, Хэм или Колбаса должны быть рядами и Наличие одного столбца. Тогда ваш запрос прост. Но если есть другие переменные (Locations?), Тогда ситуация немного меняется. –

+0

Хорошо, я согласен с беконом ха-ха. Я просто попытался упростить его для публикации. В каждой из строк находится опрос, заполненный пользователем, и он держит эти ответы. В списке «Доступно» это список доступных (скажем) меню в этом случае. В каждом случае пользователь НУЖДАЕТСЯ что-то, что мне нужно, чтобы вытащить все меню, которые имеют то, что им нужно. Каждая строка в ответах также содержит информацию о сеансе, время, дату, почтовый индекс. Я мог бы, однако, сломать это и иметь таблицу, которая просто содержит результаты, как вы сказали, но в моей фактической БД у меня есть 13 колоний желаний, потребностей и т. Д. – SOG

ответ

1

Дайте это попробовать: SELECT tblAnswers.UserID, IIf([tblAnswers].[bacon]>0 And [tblMenus].[Bacon]<>0,[MenuID],Null) AS BaconMenu, IIf([tblAnswers].[Ham]>0 And [tblMenus].[Ham]<>0,[MenuID],Null) AS HamMenu, IIf([tblAnswers].[Sausage]>0 And [tblMenus].[Sausage]<>0,[MenuID],Null) AS SausageMenu FROM tblAnswers, tblMenus WHERE (((IIf([tblAnswers].[bacon]>0 And [tblMenus].[Bacon]<>0,[MenuID],Null)) Is Not Null)) OR (((IIf([tblAnswers].[Ham]>0 And [tblMenus].[Ham]<>0,[MenuID],Null)) Is Not Null)) OR (((IIf([tblAnswers].[Sausage]>0 And [tblMenus].[Sausage]<>0,[MenuID],Null)) Is Not Null));

Просто вставить, что в представление SQL сделать запрос, окно (После изменения имен таблиц и столбцов, чтобы соответствовать вашему) Вы, очевидно, нужно настроить его как потребность реальности, но делает то, что вы просили, с предоставленными данными.

+0

Это замечательно. Большое вам спасибо, он делает то, что мне нужно для этого, и является отличной основой для остальной части работы. Еще раз спасибо. – SOG

Смежные вопросы