Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Помогите составить запрос (число прочтений - 2402 )
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Помогите составить запрос
20. Августа 2012 :: 05:37
Печать  
Данные:
Регистр ОстаткиТМЦ с разрезами Номенклатура | Склад;
Таблица соответствия:
Склад | Имя.

Как правильно составить запрос, чтоб из таблицы вида:
Номенклатура1  Склад1 Остаток
Номенклатура1  Склад3 Остаток
................................................

Получить таблицу вида:
Номенклатура  |   Имя1 Имя3?
То есть, требуется получить таблицу, в которой указан товар и наличие его на определенных точках.
Путано написал, но надеюсь, суть понятна...

  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Помогите составить запрос
Ответ #1 - 20. Августа 2012 :: 06:21
Печать  
То, что ты хочешь, возможно только с фиксированным числом колонок под конкретные склады. Или выполнять запрос дважды: сначала получить склады, а потом программно переформировать запрос под нужные склады.
А так получить количество по конкретному складу:
CASE WHEN склад = @склад1 THEN Количество ELSE 0 END, ну или для фокса будет такой вариант: IIF($склад = :склад1, $Количество, 0).
  
Наверх
 
IP записан
 
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Re: Помогите составить запрос
Ответ #2 - 20. Августа 2012 :: 06:32
Печать  
Dmitry The Wing писал(а) 20. Августа 2012 :: 06:21:
То, что ты хочешь, возможно только с фиксированным числом колонок под конкретные склады. Или выполнять запрос дважды: сначала получить склады, а потом программно переформировать запрос под нужные склады.
А так получить количество по конкретному складу:
CASE WHEN склад = @склад1 THEN Количество ELSE 0 END, ну или для фокса будет такой вариант: IIF($склад = :склад1, $Количество, 0).

Я вас не понимаю. Есть две конкретные таблицы. Сколько всего складов равно количеству строк в таблице Склад|Имя. 
При чем здесь количество, когда в таблицу Номенклатура|Склад|Количество итак только с остатками выбираются? 
Не понимаю...
  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Помогите составить запрос
Ответ #3 - 20. Августа 2012 :: 06:49
Печать  
Просто запрос для получения останков + left join с  табличкой соответствий для получения наименований.
На сколько я понял - запрос к сторонней базе что ли ?
Улыбка
  
Наверх
 
IP записан
 
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Re: Помогите составить запрос
Ответ #4 - 20. Августа 2012 :: 06:57
Печать  
Eprst писал(а) 20. Августа 2012 :: 06:49:
Просто запрос для получения останков + left join с  табличкой соответствий для получения наименований.
На сколько я понял - запрос к сторонней базе что ли ?
Улыбка

Запрос для подготовки данных о товарах на сайт. Про левый join я тоже дошел.
А как потом из итоговой таблицы получить колонку с указанием наличия, в которой имена складов перечислены будут?
  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Помогите составить запрос
Ответ #5 - 20. Августа 2012 :: 07:02
Печать  
В смысле ?
У тя всё в одном запросе у будет - останки, склады и наименования складов из присоединенной таблички.
  
Наверх
 
IP записан
 
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Re: Помогите составить запрос
Ответ #6 - 20. Августа 2012 :: 07:10
Печать  
Eprst писал(а) 20. Августа 2012 :: 07:02:
В смысле ?
У тя всё в одном запросе у будет - останки, склады и наименования складов из присоединенной таблички.

Мне нужно из таблицы с именами, которая из левого джойна получится:
Номенклатура1 | Склад1 | Имя1
Номенклатура1 | Склад3 | Имя3
Номенклатура1 | Склад5 | Имя5

Получить таблицу:
Номенклатура1 | Имя1 Имя3 Имя5.
Запросом.
  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Помогите составить запрос
Ответ #7 - 20. Августа 2012 :: 07:15
Печать  
и сумму останков на этих складах ?
  
Наверх
 
IP записан
 
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Re: Помогите составить запрос
Ответ #8 - 20. Августа 2012 :: 07:17
Печать  
Eprst писал(а) 20. Августа 2012 :: 07:15:
и сумму останков на этих складах ?

Сумма не нужна
  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Помогите составить запрос
Ответ #9 - 20. Августа 2012 :: 07:49
Печать  
  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Помогите составить запрос
Ответ #10 - 21. Августа 2012 :: 07:39
Печать  
У меня реализовано так.
Сперва создаем таблицу Товар,Склад,Количество.
Потом выгружаем Уникальные Склады.
Далее создаем Тустую таблицу с Колонкой Товар.
Проходим по Списку уникальных Складов и Создаем Колонки (это будет количество) с Идентификатором Соответствующего Склада(я использую идентификатор как глМетадата.ЗначениеВСтрокуБД(Склад))
Далее перебираем Все строки и вытягиваем Количество и заполняем Нужные колонки.
Все.
  
Наверх
 
IP записан
 
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Re: Помогите составить запрос
Ответ #11 - 21. Августа 2012 :: 08:42
Печать  
Eprst писал(а) 20. Августа 2012 :: 07:49:

Всем спасибо за помощь! Воспользовался советом из этого поста. Всё получилось!
  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать