Перейти к содержимому

Фото
- - - - -

Access


  • Вы не можете создать новую тему
  • Please log in to reply
7 ответов в этой теме

#1 OzzY

OzzY

    Великий и Ужасный

  • Пользователь
  • 461 сообщений

Отправлено 10 февраля 2006 - 13:46

Всем привет. Не могли бы вы мне помочь и прикрепить сюда шаблон Accessa в котором 4 таблицы связаны между собой такими отношениями, чтобы запрос выдавал в качестве результата все данные из всех таблиц, из тех полей, которые помещаются в запрос.
Таблицы такие:
цены : товар (текстовый формат)
номер продукта(номер)
цена(валюта)
номер(автономер)
продажи: дата(дата)
продавец номер(номер)
номер товара(номер) это не то же самое, что номер продукта в первой
кол-во товара (номер)
номер(автономер)
продавцы: продавец(текст)
отдел(номер)
номер(автономер)
отдел: телефон(текст с маской) маску можно не ставить...
номер(автономер)

Вот и когда я делаю следующий запрос: Продавец-дата-товар-количество товара
он мне выдает только одно имя продавца(из 6-ти)...и соответственно только одну строку в результате запроса. Если ставить запрос с другим именем(не то которое он выдает), то вообще ничего нет! Ключи расставлены на автономера. И у меня отношения расставлены так:
цена(номер)-продажи(номер продукта)-продажи(номер продавца)-продавцы(номер)-продавцы(номер)-отдел(номер)

Как их расставить правильно? Пришлите, пожалуйста.

эдит: только тут похоже нельзя посылать аксесовские файлы, я свой пример в зипе прикреплю...

Прикрепленные файлы

  • Прикрепленный файл  Laadu.rar   15К   6 Количество загрузок

Сообщение изменено: OzzY (10 февраля 2006 - 13:47 )

  • 0

#2 Warvick

Warvick
  • Пользователь
  • 411 сообщений
  • Откуда:Tallinn

Отправлено 10 февраля 2006 - 14:20

Связи правильно установлены,
только надо так:
SELECT  M.Myyja, MD.Kuup2ev, H.Toode, MD.Kauba_kogus
FROM Myyjad M, Myygid MD, Hinnad H
WHERE MD.Myyja_nr =  m.Nr
AND MD.Kauba_nr = H.nr
AND M.Myyja = ?
INNER JOIN-ы сам поставь если хошь
  • 0
Да, я такой!

#3 OzzY

OzzY

    Великий и Ужасный

  • Пользователь
  • 461 сообщений

Отправлено 10 февраля 2006 - 16:27

А почему именно так? Почему не полные имена таблиц? я только начал с этим всем делом разбираться.вот скопировал просто то, что вы написали в SQL запрос, он мне ошибки дает
SELECT  M.Myyja, MD.Kuup2ev, H.Toode, MD.Kauba_kogus
FROM Myyjad M, Myygid MD, Hinnad H
WHERE MD.Myyja_nr =  m.Nr
AND MD.Kauba_nr = H.nr
FROM Osakond INNER JOIN (Myyjad INNER JOIN (Hinnad INNER JOIN Myygid ON Hinnad.Nr = Myygid.Kauba_nr) ON (Myyjad.Nr = Hinnad.Nr) AND (Myyjad.Nr = Myygid.Myyja_nr)) ON (Osakond.Nr = Hinnad.Nr) AND (Osakond.Nr = Myyjad.Osakond);
Вот при таком раскладе...пишет Syntax error! :$
  • 0

#4 Warvick

Warvick
  • Пользователь
  • 411 сообщений
  • Откуда:Tallinn

Отправлено 10 февраля 2006 - 19:27

А почему именно так? Почему не полные имена таблиц?

С краткими легче работать, не находишь?

SELECT  M.Myyja, MD.Kuup2ev, H.Toode, MD.Kauba_kogus
FROM Myyjad M, Myygid MD, Hinnad H
WHERE MD.Myyja_nr =  m.Nr
AND MD.Kauba_nr = H.nr
FROM Osakond INNER JOIN (Myyjad INNER JOIN (Hinnad INNER JOIN Myygid ON Hinnad.Nr = Myygid.Kauba_nr) ON (Myyjad.Nr = Hinnad.Nr) AND (Myyjad.Nr = Myygid.Myyja_nr)) ON (Osakond.Nr = Hinnad.Nr) AND (Osakond.Nr = Myyjad.Osakond);
Вот при таком раскладе...пишет Syntax error! :$

Ну во первых если хочешь с JOINами, то надо ТАК:
SELECT Myyjad.Myyja, Myygid.Kuup2ev, Hinnad.Hind, Myygid.Kauba_kogus
FROM Myyjad INNER JOIN (Hinnad INNER JOIN Myygid ON Hinnad.Nr = Myygid.Kauba_nr) ON Myyjad.Nr = Myygid.Myyja_nr;
и кто придумал 2 предиката FROM ? :)
у тебя 3 таблицы только в запросу учавствуют - вот и джойнь 3 :)

а вообще в Акссесе дизайнер запросов есть, учись пользоваться для начала :)
  • 0
Да, я такой!

#5 OzzY

OzzY

    Великий и Ужасный

  • Пользователь
  • 461 сообщений

Отправлено 10 февраля 2006 - 21:14

;) спасибо, большое...я учусь да. Только начал вот.
а вот теперь такая проблемма: если добавить четвертую таблицу в запрос и делать запрос, например, на номер теефона того отдела, где работает Петер. он не работает.вообще, если добавить 4-ую таблицу, показывает только три первых имени...а остальных нет ;)

Сообщение изменено: OzzY (10 февраля 2006 - 22:19 )

  • 0

#6 Warvick

Warvick
  • Пользователь
  • 411 сообщений
  • Откуда:Tallinn

Отправлено 11 февраля 2006 - 11:49

OzzY,
шо то я не понял? куда номер телефона?
хошь в предыдущем варианте ещё номер телефона отдела?

SELECT M.Myyja, MD.Kuup2ev, H.Toode, MD.Kauba_kogus, O.Telefon
FROM Myyjad M, Myygid MD, Hinnad H, Osakond O
WHERE MD.Myyja_nr = m.Nr
AND MD.Kauba_nr = H.nr
AND M.Osakonna_nr =O.nr
AND M.Myyja = ?

чтото типа того. выделил то что добавилось, но структуру твоей базы не помню, так что возможны ошибки.
С джойнами - сам.
И начни наконец пользоваться дизайнером!
  • 0
Да, я такой!

#7 OzzY

OzzY

    Великий и Ужасный

  • Пользователь
  • 461 сообщений

Отправлено 11 февраля 2006 - 22:05

Так я дизайнером и делаю(не на СКуЛ пишу), а не получается, если там все таблицы добавить почему-то...не получается чтобы в запросе все имена писал, пишет только половину...
  • 0

#8 Warvick

Warvick
  • Пользователь
  • 411 сообщений
  • Откуда:Tallinn

Отправлено 11 февраля 2006 - 23:21

посмотри связи м-у таблицами
возможно когда базу делал чего-нить лишено связал
  • 0
Да, я такой!