Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Web > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 15 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 23.06.2019, 18:17   #1
SAMOUCHKA
Участник клуба
 
Регистрация: 07.08.2011
Адрес: Димитровград
Сообщений: 572
Репутация: 161

skype: ilya10009
По умолчанию Запрос к связанным таблицам

Как сделать запрос к с вязанным таблицам, в общем то я знаю. Но тут сложный случай.
Есть таблица категории_товаров, в ней две колонки. Создается вот так
Код:
CREATE TABLE категории_товаров 
id INTEGER PRIMARY KEY AUTOINCREMENT,
категория TEXT;
Есть таблица товары. В ней id, товар, цена и id категории.
Код:
CREATE TABLE товары
id INTEGER PRIMARY KEY AUTOINCREMENT,
товар TEXT,
цена INTEGER,
id_категории INTEGER;
Сделать к ней запрос, просто
Код:
SELECT товар, цена, категории_товаров.категории FROM 
товары INNER JOIN категории_товаров ON товары.id_категоии = категории_товаров.id;
Ну а дальше начинаются сложности.
Таблица склад. Содержит в себе id товара и количество
Код:
CREATE TABLE склад
id INTEGER PRIMARY KEY AUTOINCREMENT,
количество INTEGER,
id_товары INTEGER;
Тут я ни как не соображу как сделать запрос. Так как таблица товары, уже является связанной.

Подскажите пожалуйста

В результате запроса, я хочу видеть:
количество -из таблицы склад
товар, цена -из таблицы товары
категория -из таблицы категории_товаров
__________________
eremeew.ilya@yandex.ru
SAMOUCHKA вне форума   Ответить с цитированием
Старый 23.06.2019, 21:02   #2
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 18,855
Репутация: 6688
По умолчанию

А в нескольких складах один и тот же товар не бывает?

Код:
SELECT товары.товар,товары.цена,категории_товаров.категория,
    (SELECT SUM(количество) FROM склад WHERE склад.id_товары=товары.id)
  FROM товары
    LEFT JOIN категории_товаров ON категории_товаров.id=товары.id_категории
или так
Код:
SELECT товары.товар,товары.цена,категории_товаров.категория,SUM(склад.количество)
  FROM товары
    LEFT JOIN категории_товаров ON категории_товаров.id=товары.id_категории
    LEFT JOIN склад ON склад.id_товары=товары.id
  GROUP BY товары.товар,товары.цена,категории_товаров.категория
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 23.06.2019 в 21:12.
Аватар вне форума   Ответить с цитированием
Старый 23.06.2019, 21:44   #3
SAMOUCHKA
Участник клуба
 
Регистрация: 07.08.2011
Адрес: Димитровград
Сообщений: 572
Репутация: 161

skype: ilya10009
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А в нескольких складах один и тот же товар не бывает?
Нет склад один.

мне просто нужно разобраться, как сделать запрос к таблице, в которой есть связанная таблица.
__________________
eremeew.ilya@yandex.ru
SAMOUCHKA вне форума   Ответить с цитированием
Старый 23.06.2019, 22:02   #4
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 18,855
Репутация: 6688
По умолчанию

Цитата:
склад один
Сегодня на одном, завтра на трех) Так еще можно, если 100% только на одном складе. Может скобки еще расставить, смотря какая СУБД
Код:
SELECT товар, цена, категории_товаров.категории,склад.количество
  FROM  Товары 
    INNER JOIN категории_товаров ON товары.id_категоии = категории_товаров.id
    INNER JOIN склад ON склад.id_товары=товары.id
Или так
Код:
SELECT товар, цена, категории_товаров.категории,склад.количество
  FROM  Товары, категории_товаров, склад
  WHERE товары.id_категоии = категории_товаров.id AND склад.id_товары=товары.id
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 23.06.2019 в 22:12.
Аватар вне форума   Ответить с цитированием
Старый 23.06.2019, 22:26   #5
SAMOUCHKA
Участник клуба
 
Регистрация: 07.08.2011
Адрес: Димитровград
Сообщений: 572
Репутация: 161

skype: ilya10009
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Может скобки еще расставить, смотря какая СУБД
SQLite

Цитата:
Сообщение от Аватар Посмотреть сообщение
Код:

SELECT товар, цена, категории_товаров.категории,склад.к оличество
FROM Товары
INNER JOIN категории_товаров ON товары.id_категоии = категории_товаров.id
INNER JOIN склад ON склад.id_товары=товары.id
Вот это то что нужно! Огромное спасибо!!! Сам ни ка сообразить не мог.
Хотя и знал как соединять две и более таблиц.
Но в практике не было случая, что бы связанная таблица, уже была связанной.
__________________
eremeew.ilya@yandex.ru
SAMOUCHKA вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрос по двум таблицам Alina111 SQL, базы данных 2 11.01.2013 20:20
Фильтр по связанным таблицам lition1 БД в Delphi 11 01.04.2011 23:42
составить запрос к таблицам T1 и T2 MonteCarlos SQL, базы данных 13 03.02.2008 15:05
Запрос по всем таблицам Abay SQL, базы данных 3 27.09.2007 09:07
Поиск по связанным таблицам Таня84 БД в Delphi 1 22.02.2007 11:37


01:20.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru