Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Заезженный вопрос  [new]
ther
Member

Откуда:
Сообщений: 816
еще один вопрос...есть 2 теблицы в одной товары в другой цена
хочу сделать выборку типа

[src]
select * from TBofGoodsIncoming as t,valuation as v
where t.id_документа=32 and v.id_документа=32
[/ SRC]


но она дублирует записи..про distinct я слышал но она работает только при

[src]
select distinct(тмц) from TBofGoodsIncoming as t,valuation as v
where t.id_документа=32 and v.id_документа=32
[/ SRC]


если добавлять distinct(тмц),* то опять дубликаты

подскажите плз как правильно выбрать без дублирования....знаю вопрос заезженный но голова уже варит плохо
ПС
нужны все поля из обеих таблиц и отсутсвие дубликатов в "тмц"
5 ноя 09, 09:59    [7883770]     Ответить | Цитировать Сообщить модератору
 Re: Заезженный вопрос  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Рекомендации, пункты 6 и 4
5 ноя 09, 10:01    [7883775]     Ответить | Цитировать Сообщить модератору
 Re: Заезженный вопрос  [new]
ther
Member

Откуда:
Сообщений: 816
ууу..блин опять с тегами напортачил
5 ноя 09, 10:03    [7883786]     Ответить | Цитировать Сообщить модератору
 Re: Заезженный вопрос  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
ээээ... там в этих пунктах рекомендаций не только про теги написано....
5 ноя 09, 10:05    [7883797]     Ответить | Цитировать Сообщить модератору
 Re: Заезженный вопрос  [new]
ther
Member

Откуда:
Сообщений: 816
я понял..сорри просто спешу..и задолбанный 3 неделю...
версия sql server 2008
---------------------------
еще один вопрос...есть 2 теблицы в одной товары в другой цена
хочу сделать выборку типа


select * from TBofGoodsIncoming as t,valuation as v 
where t.id_документа=32 and v.id_документа=32 

но она дублирует записи..про distinct я слышал но она работает только при

select distinct(тмц) from TBofGoodsIncoming as t,valuation as v 
where t.id_документа=32 and v.id_документа=32 

если добавлять distinct(тмц),* то опять дубликаты

подскажите плз как правильно выбрать без дублирования....знаю вопрос заезженный но голова уже варит плохо
ПС
нужны все поля из обеих таблиц и отсутсвие дубликатов в "тмц"
5 ноя 09, 10:07    [7883810]     Ответить | Цитировать Сообщить модератору
 Re: Заезженный вопрос  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Рекомендации, пункт 6
Если Ваш запрос связан с созданием какого-то запроса,
то предоставление Вами следующих материалов
может существенно ускорить нахождение решения:

- скрипты создания таблиц;
- скрипты заполнения этих таблиц тестовыми данными;
- описание желаемого результата на примере тестовых данных.
5 ноя 09, 10:10    [7883834]     Ответить | Цитировать Сообщить модератору
 Re: Заезженный вопрос  [new]
ther
Member

Откуда:
Сообщений: 816
CREATE TABLE [dbo].[TBofGoodsIncoming] (
  [ID_Документа] int NULL,
  [Номер] varchar(15) COLLATE Cyrillic_General_CI_AS NULL,
  [ТМЦ] varchar(150) COLLATE Cyrillic_General_CI_AS NULL,
  [Количество] int NULL,
  [Код] int NULL,
  [НДС] varchar(60) COLLATE Cyrillic_General_CI_AS NULL,
  [Наценка] float NULL,
  [КвоНеПринято] float NULL,
  [Срок годности] date NULL,
  [Единица] varchar(50) COLLATE Cyrillic_General_CI_AS NULL,
  [Серия] varchar(150) COLLATE Cyrillic_General_CI_AS NULL,
  [Производитель] varchar(150) COLLATE Cyrillic_General_CI_AS NULL
)
ON [PRIMARY]
GO

CREATE TABLE [dbo].[Valuation] (
  [ID] int IDENTITY(1, 1) NOT NULL,
  [Документ] varchar(100) COLLATE Cyrillic_General_CI_AS NULL,
  [ID_Документа] int NULL,
  [Вид] varchar(150) COLLATE Cyrillic_General_CI_AS NULL,
  [Подразделение] varchar(150) COLLATE Cyrillic_General_CI_AS NULL,
  [Товар] varchar(150) COLLATE Cyrillic_General_CI_AS NULL,
  [Цена_] money NULL,
  [Цена розничная] money NULL,
  [Цена оптовая] money NULL,
  [Цена завода] money NULL,
  [Цена закупки] money NULL,
  [Цена склада] money NULL,
  [Автор] varchar(100) COLLATE Cyrillic_General_CI_AS NULL,
  [Дата] date NULL,
  [Время] time(1) NULL,
  CONSTRAINT [PK__Valuatio__3214EC27634EBE90] PRIMARY KEY CLUSTERED ([ID])
)
ON [PRIMARY]
GO

EXEC sp_addextendedproperty 'MS_Description', N'Оценка товара', 'schema', 'dbo', 'table', 'Valuation'
GO

вывод при
select * from TBofGoodsIncoming as t,valuation as v 
where t.id_документа=32 and v.id_документа=32 

id тмц Номер
________________________________________________________
14 90-60-90 025Г №40ТБ Н 0000000002
14 BN ПУСТЫШ КРУГ РИС/КОЛЬЦ ЛАТЕК Н 0000000002
15 90-60-90 025Г №40ТБ Н 0000000002
15 BN ПУСТЫШ КРУГ РИС/КОЛЬЦ ЛАТЕК Н 0000000002

тоесть надо вывести данные из таблицы TBofGoodsIncoming которому бы соответствовали цена из таблицы valuation

вроде все
5 ноя 09, 10:21    [7883887]     Ответить | Цитировать Сообщить модератору
 Re: Заезженный вопрос  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
ther
вроде все
как это всё?
Вы же привели только однин из трех пунктов. А где еще два:
Рекомендации, пункт 6
Если Ваш запрос связан с созданием какого-то запроса,
то предоставление Вами следующих материалов
может существенно ускорить нахождение решения:

- скрипты создания таблиц;
- скрипты заполнения этих таблиц тестовыми данными;
- описание желаемого результата на примере тестовых данных.
?
5 ноя 09, 10:26    [7883927]     Ответить | Цитировать Сообщить модератору
 Re: Заезженный вопрос  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Что вернут эти два запроса:
select * from TBofGoodsIncoming where ID_Документа=32
select * from Valuation where ID_Документа=32
??
5 ноя 09, 10:26    [7883929]     Ответить | Цитировать Сообщить модератору
 Re: Заезженный вопрос  [new]
DENIS_CHEL
Member

Откуда:
Сообщений: 23097
Кажется я старею, так и не понял в чем проблема…

Паганель вас просил:

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


Не могли ли бы вы, все таки предоставить данные и желаемый результат?

---------------------------------------------------------
- Ну вы тут и нафлудили! - сказал Геракл, зайдя на Авгиев форум..
5 ноя 09, 10:26    [7883931]     Ответить | Цитировать Сообщить модератору
 Re: Заезженный вопрос  [new]
ther
Member

Откуда:
Сообщений: 816
iap,
1. скрипт
ID_Документа Номер ТМЦ +
______________________________________________________________________________
32 0000000002 90-60-90 025Г №40ТБ Н
32 0000000002 BN ПУСТЫШ КРУГ РИС/КОЛЬЦ ЛАТЕК Н

2.скрипт
ID_Документа Товар +цена
________________________________________________________
14 90-60-90 025Г №40ТБ Н
15 BN ПУСТЫШ КРУГ РИС/КОЛЬЦ ЛАТЕК Н

Желаемый результат писал
тоесть надо вывести данные из таблицы TBofGoodsIncoming которому бы соответствовали цена из таблицы valuation

ПС
сорри но как вак заполнить тестовыми данными?
ПСС
у меня последние 3 недели раб день по 16 часов так что сорри за тупости
5 ноя 09, 10:40    [7884041]     Ответить | Цитировать Сообщить модератору
 Re: Заезженный вопрос  [new]
DENIS_CHEL
Member

Откуда:
Сообщений: 23097
ther
ПС
сорри но как вак заполнить тестовыми данными?


Выложить скрипт с командой Insert тестовых данных в ваши таблички…

---------------------------------------------------------
- Ну вы тут и нафлудили! - сказал Геракл, зайдя на Авгиев форум..
5 ноя 09, 10:45    [7884077]     Ответить | Цитировать Сообщить модератору
 Re: Заезженный вопрос  [new]
Glory
Member

Откуда:
Сообщений: 104760
ther
iap,
1. скрипт
ID_Документа Номер ТМЦ +
______________________________________________________________________________
32 0000000002 90-60-90 025Г №40ТБ Н
32 0000000002 BN ПУСТЫШ КРУГ РИС/КОЛЬЦ ЛАТЕК Н

2.скрипт
ID_Документа Товар +цена
________________________________________________________
14 90-60-90 025Г №40ТБ Н
15 BN ПУСТЫШ КРУГ РИС/КОЛЬЦ ЛАТЕК Н

Желаемый результат писал
тоесть надо вывести данные из таблицы TBofGoodsIncoming которому бы соответствовали цена из таблицы valuation

И как же запрос select * from Valuation where ID_Документа=32
возвращает ID_Документа 14 и 15 ?? Феномен какой то просто
5 ноя 09, 10:48    [7884111]     Ответить | Цитировать Сообщить модератору
 Re: Заезженный вопрос  [new]
ther
Member

Откуда:
Сообщений: 816
Glory,
32 32...я просто по ошибке вставил туда ID а не ID_документа
5 ноя 09, 10:55    [7884170]     Ответить | Цитировать Сообщить модератору
 Re: Заезженный вопрос  [new]
Glory
Member

Откуда:
Сообщений: 104760
ther
Glory,
32 32...я просто по ошибке вставил туда ID а не ID_документа

И по какому же принципу двум записям с ID_документа=32 из первой таблицы нужно выбрать по одной записи из второй таблицы ?
5 ноя 09, 10:57    [7884187]     Ответить | Цитировать Сообщить модератору
 Re: Заезженный вопрос  [new]
ther
Member

Откуда:
Сообщений: 816
INSERT INTO 
  dbo.Valuation
(
  ID,
  [Документ],
  [ID_Документа],
  [Вид],
  [Подразделение],
  [Товар],
  [Цена_],
  [Цена розничная],
  [Цена оптовая],
  [Цена завода],
  [Цена закупки],
  [Цена склада],
  [Автор],
  [Дата],
  [Время]
) 
VALUES (
  :ID,
  :Документ,
  :ID_Документа,
  :Вид,
  :Подразделение,
  :Товар,
  :Цена_,
  :Цена розничная,
  :Цена оптовая,
  :Цена завода,
  :Цена закупки,
  :Цена склада,
  :Автор,
  :Дата,
  :Время
);

и

INSERT INTO 
  dbo.TBofGoodsIncoming
(
  [ID_Документа],
  [Номер],
  [ТМЦ],
  [Количество],
  [Код],
  [НДС],
  [Наценка],
  [КвоНеПринято],
  [Срок годности],
  [Единица],
  [Серия],
  [Производитель]
) 
VALUES (
  :ID_Документа,
  :Номер,
  :ТМЦ,
  :Количество,
  :Код,
  :НДС,
  :Наценка,
  :КвоНеПринято,
  :Срок годности,
  :Единица,
  :Серия,
  :Производитель
);
5 ноя 09, 10:59    [7884202]     Ответить | Цитировать Сообщить модератору
 Re: Заезженный вопрос  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
1) Вы выполнять Ваш скрипт пробовали?
2) И где в Вашем скрипте число 32?
5 ноя 09, 11:01    [7884216]     Ответить | Цитировать Сообщить модератору
 Re: Заезженный вопрос  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
ther,

запятая между именами таблиц во FROMе - это декартово произведение. Слышали о таком?
Из первой таблицы подходят две записи и из второй столько же.
Дважды два - четыре. Правильно? Получаются четыре строки, и на каждой ID_Документа=32
Так где же дубликаты, о которых Вы всё время говорите? Всё правильно сервер возвращает. IMHO
5 ноя 09, 11:10    [7884275]     Ответить | Цитировать Сообщить модератору
 Re: Заезженный вопрос  [new]
ther
Member

Откуда:
Сообщений: 816
Glory,
по ID_Документа..так как TBofGoodsIncoming - это табличная часть документа а valuation это цена на этот товар...и ID_Документа у них одинаков
5 ноя 09, 11:12    [7884287]     Ответить | Цитировать Сообщить модератору
 Re: Заезженный вопрос  [new]
Glory
Member

Откуда:
Сообщений: 104760
ther
Glory,
по ID_Документа..так как TBofGoodsIncoming - это табличная часть документа а valuation это цена на этот товар...и ID_Документа у них одинаков

По ID_Документа выбирается 2 записи. Стало быть одного этого условия мало, чтобы выбрать одну запись
5 ноя 09, 11:13    [7884301]     Ответить | Цитировать Сообщить модератору
 Re: Заезженный вопрос  [new]
ther
Member

Откуда:
Сообщений: 816
iap
ther,

запятая между именами таблиц во FROMе - это декартово произведение. Слышали о таком?
Из первой таблицы подходят две записи и из второй столько же.
Дважды два - четыре. Правильно? Получаются четыре строки, и на каждой ID_Документа=32
Так где же дубликаты, о которых Вы всё время говорите? Всё правильно сервер возвращает. IMHO

я понял что он правильно возвращает так как я не знаю как правильно сформировать запрос..
мне надо что бы для записи из таблицы TBofGoodsIncoming выбирались цена из таблицы valuation у которых ID_Документа одинаков
5 ноя 09, 11:16    [7884326]     Ответить | Цитировать Сообщить модератору
 Re: Заезженный вопрос  [new]
Glory
Member

Откуда:
Сообщений: 104760
ther
iap
ther,

запятая между именами таблиц во FROMе - это декартово произведение. Слышали о таком?
Из первой таблицы подходят две записи и из второй столько же.
Дважды два - четыре. Правильно? Получаются четыре строки, и на каждой ID_Документа=32
Так где же дубликаты, о которых Вы всё время говорите? Всё правильно сервер возвращает. IMHO

я понял что он правильно возвращает так как я не знаю как правильно сформировать запрос..
мне надо что бы для записи из таблицы TBofGoodsIncoming выбирались цена из таблицы valuation у которых ID_Документа одинаков

Как только вы огласите точные критерии, по которым из двух записей выберется одна, так сразу и получится запрос
5 ноя 09, 11:17    [7884334]     Ответить | Цитировать Сообщить модератору
 Re: Заезженный вопрос  [new]
ther
Member

Откуда:
Сообщений: 816
сорри понял свою ошибку
select * from TBofGoodsIncoming as t,valuation as v 
where (t.id_документа=32 and v.id_документа=32) and (t.ТМЦ=v.ТМЦ)
я просто выбирал по id_документа=32 где действительно 4 записи...я просто не большой спец в sql
5 ноя 09, 11:30    [7884432]     Ответить | Цитировать Сообщить модератору
 Re: Заезженный вопрос  [new]
DENIS_CHEL
Member

Откуда:
Сообщений: 23097
select t.*,v.* from TBofGoodsIncoming as t
LEFT JOIN valuation as v  ON t.id_документа=v.id_документа AND t.ТМЦ=v.ТМЦ
where t.id_документа=32

Звездочки заменить на список нужных полей…


---------------------------------------------------------
- Ну вы тут и нафлудили! - сказал Геракл, зайдя на Авгиев форум..
5 ноя 09, 11:33    [7884462]     Ответить | Цитировать Сообщить модератору
 Re: Заезженный вопрос  [new]
Glory
Member

Откуда:
Сообщений: 104760
ther
сорри понял свою ошибку
select * from TBofGoodsIncoming as t,valuation as v 
where (t.id_документа=32 and v.id_документа=32) and (t.ТМЦ=v.ТМЦ)
я просто выбирал по id_документа=32 где действительно 4 записи...я просто не большой спец в sql

Опять чудеса. В таблице [Valuation] вдруг возникло поле v.ТМЦ
5 ноя 09, 11:33    [7884467]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить