Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Access > Запросы SQL, происходит повторение полей базы данных


Автор: Skodina 7.5.2010, 14:12
Добрый день.
 у меня возникла такая проблема

есть база данных в Access которая состоит из нескольких таблиц (Магазины, Продажи, Секции, Товар)
вот ее структура

user posted image


первая проблема такая, когда подключаю таблицы с помощью SQL запросов подключить могу только 3, если начинаюподключать еще и четветртую, то программа виснет причем бесповоротно  smile 
вот код запроса
Код

SELECT * 
FROM Магазины, Секции, Продажи
 


вторая проблема заключается в том, что при выводе этих трех таблиц дублируются поля базы данных, например 2 раза прописывается поле код секции, плюс дублируются сами данные :(( все таблицы я вывожу в одну с помощью DBGrid)

Объясните пожалуйста, что я делаю не так?

Автор: Rodman 7.5.2010, 16:08
1. Создать запрос при помощи мастера, а не в рукопашную
2. или пропиши все связи, а не просто перечисли таблицы и конкретно перечисли поля, а не звездочку пихай

Автор: Akina 7.5.2010, 17:13
Цитата(Skodina @  7.5.2010,  15:12 Найти цитируемый пост)
вот код запроса

А связи за тебя будет Пушкин прописывать?

Цитата(Skodina @  7.5.2010,  15:12 Найти цитируемый пост)
например 2 раза прописывается поле код секции

А их и есть два - в двух разных таблицах.

Автор: pseud 7.5.2010, 17:18
Код

SELECT 
  t1.код магазина as field1,
  t2.код секции as field2,
  t3.код магазина as field3,
  t3.код секции as field4
FROM 
  Магазины t1, Секции t2, Продажи t3

этот код корректно выводит одноименные поля из разных таблиц.
а вообще Rodman прав - определись какие тебе поля нужны.
ведь поля типа "код магазина" наверянка нужны только для построения выборок.

Автор: superVad 7.5.2010, 17:33
Skodina, в запросе нету связей... Ты лучше напиши, что тебе надо получить в итоге работы запроса - так проще будет.

Автор: Skodina 7.5.2010, 18:29
Цитата

superVad Skodina, в запросе нету связей... Ты лучше напиши, что тебе надо получить в итоге работы запроса - так проще будет. 

мне нужно вывести все 4 таблицы, причем код магазина и тому подобной мне тоже нужно вывести, только без повторений.


но вот на вопрос почему при подклбючении 4 таблицы программа полностью виснет никто не ответил  smile 

Автор: Skodina 7.5.2010, 19:52
Должна получится примерно вот такая таблица

user posted image


вы говорите что нужно прописать связи, как это сделать  напишите пример smile  ну или ссылку, где это можно посмотреть

Автор: Skodina 7.5.2010, 20:36
большое всем спасибо, я разобралась

Код

SELECT Продажи.Код,
       Продажи.[дата продажи], 
       Продажи.[количество проданного], 
       Продажи.цена, 
       Продажи.[сумма проданного], 
       Магазины.[код магазина], 
       Магазины.[название магазина], 
       Товар.[код товара], 
       Товар.[наименование товара], 
       Товар.[единица измерения], 
       Секции.[код секции], 
       Секции.[наименование секции]
FROM   Товар 
INNER JOIN 
       (
       Секции 
       INNER JOIN 
              (
              Магазины 
              INNER JOIN 
              Продажи 
              ON Магазины.[код магазина] = Продажи.[код магазина]
              ) 
       ON Секции.[код секции] = Продажи.[код секции]
       ) 
ON Товар.[код товара] = Продажи.[код товара];


 smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)