Запрос UNION (а потом оказалось, что вовсе и не UNION)

Gyslik.
Дата: 26.05.2004 12:54:46
Даже стыдно спрашивать, но у меня не получается запрос, наверно это будет запрос UNION.
Суть - Таблица "Адрес" со стороны 1 и таблица "Товары" со стороны многие.
Как в конструкторе запросов получить примерно такой результат?
Адрес:            Товары:
Ивантеевка       Товар1
Ивантеевка       Товар2
Ивантеевка       Товар3
Ивановка        Товар2
Ивановка        Товар1
Может я конечно совсем ничего не понимаю, но у меня почему-то запрос возвращает какие-то странные записи с пустыми полями. А пустых полей в базе нет.
Т.е. как объединить все строки из отношения со стороны один со всеми строками со стороны отношения многие?
zz
Дата: 26.05.2004 12:59:42
автор
Таблица "Адрес" со стороны 1 и таблица "Товары" со стороны многие.


Ни фига непохоже. Как Адрес со стороны 1 если у одного товара м.б. 2 адреса?
paparome
Дата: 26.05.2004 13:03:22
Наверное все таки не UNION, a inner join

И, вообще, - что в конструкторе не получается - он вроде такие элементарные запросы и сам нне поло строит

Делаешь в конструкторе и смотришь, что он там написал в SQL строке
Gyslik.
Дата: 26.05.2004 21:39:06
>Ни фига непохоже. Как Адрес со стороны 1 если у одного
>товара м.б. 2 адреса?
В том то и дело, что мне надо получить такой результат.

А проблема в том, что я в конструкторе построил простую выборку (SELECT), а результат запроса не возвращает ни одной записи.

Т.е. я не знаю, как сделать, чтобы в запросе отображались все введенные записи.

Вот что построилось в конструкторе:
SELECT тбл_покупка.пк_дата AS Дата, тбл_покупка.пк_время AS Время, 
тбл_каналы.кн_наименование_канала AS Канал,
 тбл_типы_каналов.тк_наименование_типа_канала AS Тип_канала, 
тбл_сектора.ср_наименование_сектора AS Сектор, тбл_адрес.ад_адрес AS 
Адрес, тбл_типы_брэндов.тб_наименование_брэнда AS Брэнд, 
тбл_типы_товаров.тт_наименование_товара AS Товар, 
тбл_типы_упаковки.ту_наименование_упаковки AS Упаковка, 
тбл_жирность.жн_наименование_жирности AS Жирность, 
тбл_объем.об_наименование_объема AS Объем, тбл_цена.цн_цена AS Цена, 
тбл_типы_операций.то_наименование_операции AS Операция, 
тбл_источник.ис_наименование_источника AS [Источник]
FROM тбл_цена INNER JOIN (тбл_типы_упаковки INNER JOIN (тбл_типы_товаров 
INNER JOIN (тбл_типы_брэндов INNER JOIN (тбл_объем INNER JOIN 
([тбл_источник] INNER JOIN (тбл_жирность INNER JOIN (тбл_каналы INNER JOIN 
((тбл_типы_каналов INNER JOIN тбл_каналы_типы ON 
тбл_типы_каналов.тк_код_типа_канала = 
тбл_каналы_типы.кт_код_наименование_типа_канала) INNER JOIN (тбл_адрес 
INNER JOIN ((тбл_сектора INNER JOIN тбл_адрес_сектор ON 
тбл_сектора.ср_код_сектора = тбл_адрес_сектор.ас_код_сектора) INNER JOIN
 (тбл_типы_операций INNER JOIN (тбл_номенклатура_товаров INNER JOIN 
(тбл_покупка INNER JOIN тбл_мониторинг ON тбл_покупка.пк_код_покупки = 
тбл_мониторинг.мт_код_покупки) ON 
тбл_номенклатура_товаров.нт_код_номенклатура_товаров = 
тбл_мониторинг.мт_код_номенклатура_товаров) ON 
тбл_типы_операций.то_код_операции = тбл_мониторинг.мт_код_операции) ON 
тбл_адрес_сектор.ас_код_адрес_сектор = 
тбл_мониторинг.мт_код_адрес_сектор) ON тбл_адрес.ад_код_адреса = 
тбл_адрес_сектор.ас_код_адреса) ON тбл_каналы_типы.кт_код_канала_типа = 
тбл_мониторинг.мт_код_канала_типа) ON тбл_каналы.кн_код_канала = 
тбл_каналы_типы.кт_код_наименование_канала) ON 
тбл_жирность.жн_код_жирности = 
тбл_номенклатура_товаров.нт_код_жирности) ON 
тбл_источник.ис_код_источника = тбл_мониторинг.мт_код_источника) ON 
тбл_объем.об_код_объема = тбл_номенклатура_товаров.нт_код_объема) ON 
тбл_типы_брэндов.тб_код_брэнда = 
тбл_номенклатура_товаров.нт_код_брэнда) ON 
тбл_типы_товаров.тт_код_типа_товара = 
тбл_номенклатура_товаров.нт_код_типа_товара) ON 
тбл_типы_упаковки.ту_код_упаковки = 
тбл_номенклатура_товаров.нт_код_упаковки) ON тбл_цена.цн_код_цены = 
тбл_номенклатура_товаров.нт_код_цены
WHERE (((тбл_мониторинг.мт_выгрузка)<>True));
В приложенном файлике схема данных. Я уже и про запросы почитал, но что-то не получается у меня нужный мне запрос.
Владимир Саныч
Дата: 26.05.2004 21:41:18
Ё...
Gyslik.
Дата: 26.05.2004 21:45:01
Я понимаю, что это слишком круто выкладывать всю схему данных, но иначе я просто не могу на пальцах объяснить что мне нужно.
Там конечно, может быть уж не все супер-пупер нормализованно, но суть не в этом.
Владимир Саныч
Дата: 26.05.2004 21:56:04
Да в схеме-то все замечательно, придраться не к чему. Я ёкнул от ее размера. Не думаю, что кто-то сможет при такой сложной схеме что-то предложить заочно...
(c)VIG
Дата: 26.05.2004 22:06:31
А что все-таки надо получить?
Gyslik.
Дата: 26.05.2004 22:18:55
В "тбл_адрес" вводится адрес магазина, а в таблицах "тбл_типы_брэндов", "тбл_типы_товаров", "тбл_типы_упаковки", "тбл_жирность", "тбл_объем", "тбл_цена", вводится товар. Соответственно "тбл_номенклатура товаров" - просто промежуточная таблица.

Я ввожу один адрес и на один адрес приходится много товаров.
Т.е. пользователь со строны 1 ввел адрес
Ивантеевка
, а со стороны многие ввел много товаров
Товар1, Товар2, Товар3, ... ТоварN.
А как мне в запросе получить такую строку
Адрес          Товар
Ивантеевка  Товар1
Ивантеевка  Товар2
Ивантеевка  Товар3
Ивантеевка  Товар...
Ивантеевка  ТоварN 
Темный
Дата: 26.05.2004 22:21:34
Замечание не по существу вопроса: не слишком ли ты занормализовался в этой базе? Нах столько таблиц? Лучше пожертвовать местом, чем понятностью и удобочитаемостью.