Microsoft Access SQL Query Две таблицы многие к одной

0

У меня есть таблица инвентаря. Он содержит идентификатор контакта в качестве штрих-кода code39. При инициализации мне нужно проверить этот идентификатор на идентификаторы, содержащиеся в таблице контактов. Каждый контакт имеет свой собственный идентификатор и обозначается как тип. Код инициализации должен заполнять список художественных работ, но только части, принадлежащие контакту типов "хранилище", "шоу" и "клиент". Я могу VBA это, потому что у меня не так много времени на кодирование, которое делает заявления Microsoft SQL, но я хочу получить sql down. На контакт можно ссылаться неопределенное количество предметов искусства.

эти утверждения не работают:\

strSQL = "SELECT [art_inventory_piece], [art_inventory_contact_id_code39]" & _
" FROM [Client Art Inventory] INNER JOIN [Client Contact]" & _
" ON [Client Art Inventory].art_inventory_contact_id_code39 = [Client Contact].contact_id_code39" & _
" WHERE [Client Contact].client_type = 'storage' or [Client Contact].client_type = 'show' or [Client Contact].client_type = 'client'"


strSQL = "SELECT [art_inventory_piece], [art_inventory_contact_id_code39]" & _
" FROM [Client Art Inventory]" & _
" WHERE [art_inventory_contact_id_code39]" & _
" in (select [contact_id_code39] from [Client Contact] where [contact_type]
  = 'storage' OR [contact_type] = 'show' OR [contact_type] = 'client')" & _
" ORDER BY [contact_id] ASC"
Теги:
ms-access

2 ответа

1

Я взял консультацию по TBridges и использовал Query Builder, который я никогда не использовал. После того, как немного обманывает это, выплюньте это, используя одинарные двойные цитаты. Я снова включил уши кролика и вуаля. Проблема в том, что я не выбирал из обеих таблиц, потому что я думал поэтапно.

strSQL = "SELECT [Client Art Inventory].art_inventory_contact_id_code39, [Client Art Inventory].art_inventory_piece," & _
        " [Client Contact].contact_id_code39, [Client Contact].contact_type" & _
        " FROM [Client Art Inventory] INNER JOIN [Client Contact]" & _
        " ON [Client Art Inventory].art_inventory_contact_id_code39 = [Client Contact].contact_id_code39" & _
        " WHERE ((([Client Contact].contact_type)='storage' Or ([Client Contact].contact_type)='show' Or ([Client Contact].contact_type)='client'))"

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

Посмотрев на проблему во второй раз, ясно, что сам оператор select не виноват. Мне просто нужно было увидеть [Client Art Inventory].art_inventory_piece и добавить поля в инструкцию select даже не имеет смысла. Кажется, что мое форматирование (брекетинг) в том, где выражение было особенно виновато.

0

Вероятно, ваша проблема связана с недоразумением: Microsoft SQL (так называемый TSQL) используется в MS SQL Server, но SQL in Access совсем другой.

Не видя, что вы на самом деле делаете с strSQL (выполняете его локально с помощью DoCmd.RunSQL или передаете его на экземпляр MySQL), это просто догадка, но я бы посмотрел, как вы ограничиваете свои строки. MS Access использует двойные кавычки, правильный SQL использует одиночные кавычки.

Пытаться

strSQL = "SELECT [art_inventory_piece], [art_inventory_contact_id_code39]" & _
" FROM [Client Art Inventory] INNER JOIN [Client Contact]" & _
" ON [Client Art Inventory].art_inventory_contact_id_code39 = [Client Contact].contact_id_code39" & _
" WHERE [Client Contact].client_type = ""storage"" or [Client Contact].client_type = ""show"" or [Client Contact].client_type = ""client"""
  • 0
    В какой-то момент я предположил, что компилятор проверяет Microsoft SQL, потому что SQL и T-SQL одинаковы с несущественными последствиями. Я знаю, что я должен сделать «» (без пробелов), чтобы вставить параметры. Я использую Set rst_ctl = dbs_mac.OpenRecordset (strSQL, Type: = dbOpenDynaset). Одинарные кавычки для не кодирующего текста обычно работают, но я обменяюсь и попробую.
  • 0
    ни одно утверждение не работает лучше с двойными двойными кавычками.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню