Составить SQL запрос

Статус
В этой теме нельзя размещать новые ответы.

Monterpan

Постоялец
Регистрация
3 Мар 2008
Сообщения
150
Реакции
27
Помогите, пожалуйста, доделать SQL запрос. Убил часа 4.

Есть следующая структура БД и следующий рабочий запрос выбирающий данные из двух верхних таблиц:

SELECT Заказы.Код_заказа,
Изделия_заказа.Код_изделия,
Изделия_заказа.Количество_изделия,
Заказы.Дата_изготовления,
Заказы.Код_заказчика
FROM Заказы LEFT JOIN Изделия_заказа ON Изделия_заказа.Код_заказа = Заказы.Код_заказа
---------------------------------
Нужно вместо Изделия_заказа.Код_изделия и Заказы.Код_заказчика выбрать соответственно Изделия.Изделие и Заказчики.Заказчик (т.е. выбрать дополнительно данные из нижних таблиц вместо кодов)

т.е. нужно выбрать следующие данные
SELECT Заказы.Код_заказа,
Изделия.Изделие,
Изделия_заказа.Количество_изделия,
Заказы.Дата_изготовления,
Заказчики.Заказчик

Я понимаю, что подключить нижние таблицы можно с помощью INNER JOIN. Но все мои варианты оказались с ошибками. Помогите, пожалуйста.
 

Вложения

  • database.JPG
    database.JPG
    21,9 KB · Просмотры: 29
Правильно понимаю, что Изделия и Заказчики - это третья и четвертая таблица в этом запросе?
Тогда можно их также подключить LEFT JOIN.
 
Код:
SELECT 
Заказы.Код_заказа, 
Изделия.Изделие,
Изделия_заказа.Количество_изделия,
Заказы.Дата_изготовления, 
Заказчики.Заказчик
FROM Изделия_заказа 
LEFT JOIN Изделия ON Изделия_заказа.Код_изделия=Изделия.Код_изделия
LEFT JOIN Заказы ON Изделия_заказа.Код_заказа=Заказы.Код_заказа
LEFT JOIN Заказчики ON Заказы.Код_заказчика=Заказчики.Код_заказчика
 
SELECT *FROM ((T1 INNER JOIN T2 ON T1.key = T2.key) INNER JOIN T3 ON T1.key = T3.key) INNER JOIN T4 ON T1.key2 = T4.key;

T1 - Заказы
T2 - Изделия заказа
T3 - Изделия
T4 - закзчики

Вместо key постав свои поля с ключами.

BlackPawn - на скрине видно, что чел пишет запрос в аксесе, там джоины поиному делаются.
 
Код:
SELECT 
Заказы.Код_заказа, 
Изделия.Изделие,
Изделия_заказа.Количество_изделия,
Заказы.Дата_изготовления, 
Заказчики.Заказчик
FROM Изделия_заказа 
LEFT JOIN Изделия ON Изделия_заказа.Код_изделия=Изделия.Код_изделия
LEFT JOIN Заказы ON Изделия_заказа.Код_заказа=Заказы.Код_заказа
LEFT JOIN Заказчики ON Заказы.Код_заказчика=Заказчики.Код_заказчика

Выдает ошибку: " Ошибка синтаксиса (пропущен оператор) в выражении запроса 'Изделия_заказа.Код_изделия=Изделия.Код_изделия
LEFT JOIN Заказы ON Изделия_заказа.Код_заказа=Заказы.Код_заказа
LEFT JOIN Заказчики ON Заказы.Код_заказчика=Заказчики.Код_заказчика'
"
 
Выдает ошибку: " Ошибка синтаксиса (пропущен оператор) в выражении запроса 'Изделия_заказа.Код_изделия=Изделия.Код_изделия
LEFT JOIN Заказы ON Изделия_заказа.Код_заказа=Заказы.Код_заказа
LEFT JOIN Заказчики ON Заказы.Код_заказчика=Заказчики.Код_заказчика'
"

Этот запрос не будет работать в аксесе, только MS и My SQL
 
SELECT *FROM ((T1 INNER JOIN T2 ON T1.key = T2.key) INNER JOIN T3 ON T1.key = T3.key) INNER JOIN T4 ON T1.key2 = T4.key;

T1 - Заказы
T2 - Изделия заказа
T3 - Изделия
T4 - закзчики

Вместо key постав свои поля с ключами.

Работает, получился такой вариант:
SELECT Заказы.Код_заказа,
Изделия.Изделие,
Изделия_заказа.Количество_изделия,
Заказы.Дата_изготовления,
Заказчики.Заказчик FROM
((Заказы INNER JOIN Изделия_заказа ON Заказы.Код_заказа = Изделия_заказа.Код_заказа)
INNER JOIN Изделия ON Изделия_заказа.Код_изделия = Изделия.Код_изделия)
INNER JOIN Заказчики ON Заказы.Код_заказчика = Заказчики.Код_заказчика

BlackPawn - на скрине видно, что чел пишет запрос в аксесе, там джоины поиному делаются.

Я пишу запрос к аксесу подключаясь из delphi.
 
Я пишу запрос к аксесу подключаясь из delphi.

Запрос то обрабатывает аксес и формат ему нужен свой(и в делфи и си...)
А в дальнейшем делай так:
1. добавляешь в акссес необходимое количество таблиц с одним полем например ID
2. создаешь запрос в нем с помощью конструктора
3. добавляешь в его все таблицы
4. и создаешь связи таблиц, перетягиванием одного поля таблицы на другое поле
5. включаешь режим SQL и у тебя готовый запрос
 
Запрос то обрабатывает аксес и формат ему нужен свой(и в делфи и си...)
А в дальнейшем делай так:
1. добавляешь в акссес необходимое количество таблиц с одним полем например ID
2. создаешь запрос в нем с помощью конструктора
3. добавляешь в его все таблицы
4. и создаешь связи таблиц, перетягиванием одного поля таблицы на другое поле
5. включаешь режим SQL и у тебя готовый запрос

Кстати да, очень удобно.

Знал бы это 2 дня назад, сэкономил бы часов 8 точно.
 
подскажите как правильно составить запрос для новости в дле (будет много различных рецептов) нужно сделать чтобы вводило имя заголовок, дата новости, короткая новость и полная новость, ну может еще какие нужные поля таблиц для дле, или может если есть какой конвертер для быстрого составления такой штуки...
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху