Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.06.2019, 17:17   #1
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию Запрос к связанным таблицам

Как сделать запрос к с вязанным таблицам, в общем то я знаю. Но тут сложный случай.
Есть таблица категории_товаров, в ней две колонки. Создается вот так
Код:
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;
Тут я ни как не соображу как сделать запрос. Так как таблица товары, уже является связанной.

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

В результате запроса, я хочу видеть:
количество -из таблицы склад
товар, цена -из таблицы товары
категория -из таблицы категории_товаров
SAMOUCHKA вне форума Ответить с цитированием
Старый 23.06.2019, 20:02   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

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

Код:
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 в 20:12.
Аватар вне форума Ответить с цитированием
Старый 23.06.2019, 20:44   #3
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию

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

мне просто нужно разобраться, как сделать запрос к таблице, в которой есть связанная таблица.
SAMOUCHKA вне форума Ответить с цитированием
Старый 23.06.2019, 21:02   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

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

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

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

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

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


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