Ганчиков Михаил Гость
|
Добавлено: Вс Апр 25 2004 11:29 Заголовок сообщения: Знатокам SQL - помогите с запросом!!! |
|
|
Товарищи, нужна ваша СРОЧНАЯ ПОМОЩЬ!!!
Есть 3 таблицы (с указанием реквизитов):
Магазины (Код магазина|Наименование|Дилер|Район|Адрес|Телефон|),
Детали (Код детали|Наименование|... и т.д.),
Реестр (Код записи|Код магазина|Код детали|Цена)
Нужно написать запрос, выводящий все магазины, торгующие указанной деталью (предположим, 'КОЛЕСО') с указанием цены по которой продается деталь. Вот что я написал:
SELECT Наименование, Дилер, Район, Адрес, Телефон, Реестр.[Цена детали (руб)]
FROM Магазины,Реестр
WHERE Магазины.[Код магазина] = Реестр.[Код магазина] AND Магазины.[Код магазина] IN (SELECT [Код магазина] FROM Реестр WHERE Реестр.[Код детали] IN
(SELECT [Код детали] FROM Детали WHERE Детали.Наименование = 'Колесо'))
Проблема в том, что в этом случае выдаются все записи в таблице Магазины, коды которых указаны в таблице Реестр. А нужно, чтобы только те, где Реестр.Код детали = Детали.Код детали и т.д. (по запросу должно быть понятно...). Очень жду вашей помощи, заранее благодарен, Михаил.
p.s. был получен ответ, содержащий вот такой запрос:
SELECT Наименование, Дилер, Район, Адрес, Телефон, Реестр.[Цена детали (руб)]
FROM Магазины INNER JOIN Реестр ON Магазины.[Код магазина] = Реестр.[Код магазина] INNER JOIN Детали ON Детали.[Код детали] = Реестр.[Код детали] WHERE Детали.Наименование = 'Колесо'
На что Access написал - ошибка синтаксиса. В чем проблема, нельзя использовать двойной INNER JOIN???
ПОМОГИТЕ, КУРСОВИК СДАВАТЬ УЖЕ ЧЕРЕЗ НЕДЕЛЮ!!! |
|
Гость
|
Добавлено: Пн Апр 26 2004 01:04 Заголовок сообщения: |
|
|
Я создала все, как дано, и проверила, так у меня сработало:
SELECT Наименование, Дилер, Район, Адрес, Телефон, Реестр.[Цена], Детали.[Наименование]
FROM Магазины,Реестр,Детали
WHERE Магазины.[Код магазина] = Реестр.[Код магазина]
AND Детали.[Код детали] = Реестр.[Код детали]
AND Реестр.[Код детали] IN (SELECT [Код детали] FROM Детали WHERE Детали.[Наименование] = 'Колесо')
Хотя пришлось добавить некоторые данные и из Деталей .
В оригинале под Delphi звучало так
(может я где ошиблась при переводе):
SELECT m1.'Наименование', m1.'Дилер', r1.'Цена', d1.'Наименование'
FROM mag m1,reestr r1, detal d1
WHERE m1.'Код магазина' = r1.'Код магазина'
AND d1.'Код детали' = r1.'Код детали'
AND r1.'Код детали' IN (SELECT d3.'Код детали' FROM detal d3 WHERE d3.'Наименование' = 'Колесо') |
|