powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Запрос заполняет столбцы ненужными данными
12 сообщений из 12, страница 1 из 1
Запрос заполняет столбцы ненужными данными
    #40127049
crookedpencil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет! Мне нужно, чтобы запрос отобрал из столбца названиепродукта записи, в которых присутствует слово парфюм.

попробовал сделать это:
Код: sql
1.
2.
3.
select distinct dbo.Ассортимент.кодпродукта,dbo.Магазин.названиепродукта, dbo.Ассортимент.производитель
FROM dbo.Ассортимент , dbo.Магазин
WHERE dbo.Ассортимент.названиепродукта like '%парфюм%'  



как итог должно выйти:
Код: sql
1.
2.
3.
4.
5.
6.
кодпродукта|названиепродукта|производитель
-------------------------------------------------------
3          |детский парфюм  |moriki doriki
27         |женский парфюм  |chanel
88         |мужской парфюм  |montale
 


а выходит:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
кодпродукта|названиепродукта|производитель
-------------------------------------------------------
3          |детский парфюм  |avon
3          |детский парфюм  |moriki doriki
3          |детский парфюм  |chanel
3          |детский парфюм  |montale
27         |женский парфюм  |avon
27         |женский парфюм  |moriki doriki
27         |женский парфюм  |chanel
27         |женский парфюм  |montale
88         |мужской парфюм  |avon
88         |мужской парфюм  |moriki doriki
88         |мужской парфюм  |chanel 
88         |мужской парфюм  |montale



и т.д.

заполняет по количеству строк в таблице, к примеру, строк 100, а результатом запроса будет 300 записей, того вида, что был приведен выше.
как можно решить эту проблему?
...
Рейтинг: 0 / 0
Запрос заполняет столбцы ненужными данными
    #40127060
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня встречный запрос: самоучка, чтоли?

Если нет - огласите имя альма-матер...
...
Рейтинг: 0 / 0
Запрос заполняет столбцы ненужными данными
    #40127064
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crookedpencil,

результат всегда будет помножен на количество магазинов.
зачем-то вы их туда включили.
...
Рейтинг: 0 / 0
Запрос заполняет столбцы ненужными данными
    #40127066
crookedpencil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ShIgor, здесь нет ничего, указывающее на количество магазинов, ведь он только один
...
Рейтинг: 0 / 0
Запрос заполняет столбцы ненужными данными
    #40127067
crookedpencil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ShIgor, суть в том, что мне нужно использовать две таблицы, чтобы отобразить производителей. Если убрать производителей и таблицу магазин, то все будет работать корректно
...
Рейтинг: 0 / 0
Запрос заполняет столбцы ненужными данными
    #40127076
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crookedpencil
ShIgor, суть в том, что мне нужно использовать две таблицы, чтобы отобразить производителей. Если убрать производителей и таблицу магазин, то все будет работать корректно

Не верю! (с) Станиславский
...
Рейтинг: 0 / 0
Запрос заполняет столбцы ненужными данными
    #40127079
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crookedpencil,

ок. давайте смотреть правде в глаза
что выдают
Код: sql
1.
2.
3.
select dbo.Ассортимент.кодпродукта,dbo.Ассортимент.названиепродукта, dbo.Ассортимент.производитель
from dbo.Ассортимент 
where dbo.Ассортимент.названиепродукта like '%парфюм%'  


и
Код: sql
1.
2.
select dbo.Магазин.названиепродукта
from dbo.Магазин


обратите внимание, дистинкты убраны.
...
Рейтинг: 0 / 0
Запрос заполняет столбцы ненужными данными
    #40127085
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И не пробовали сделать
Код: sql
1.
2.
3.
select *
FROM dbo.Ассортимент , dbo.Магазин
WHERE dbo.Ассортимент.названиепродукта like '%парфюм%'  


?

попробуйте для начала
...
Рейтинг: 0 / 0
Запрос заполняет столбцы ненужными данными
    #40127088
crookedpencil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
всем спасибо, проблема была в отсутствии связи между таблицами, поставил inner join и все работает верно
...
Рейтинг: 0 / 0
Запрос заполняет столбцы ненужными данными
    #40127106
Wlr-l
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Смотрим таблицу " а выходит " и посмотрим на продукт №3:

Код: plaintext
1.
2.
3.
4.
5.
6.
кодпродукта|названиепродукта|производитель
-------------------------------------------------------
3          |детский парфюм  |avon
3          |детский парфюм  |moriki doriki
3          |детский парфюм  |chanel
3          |детский парфюм  |montale

Т.е. продукт №3 - это детский парфюм и его производят avon, moriki
doriki, chanel и montale.

Условие отбора данных:

Код: sql
1.
WHERE dbo.Ассортимент.названиепродукта like '%парфюм%'

, т.е. должны быть выбраны товары в названии которых есть подстрока "парфюм" ВСЕХ производителей.

Теперь смотрим таблицу " как итог должно выйти ". В ней есть только одна строка для продукта №3:

Код: plaintext
1.
2.
3.
кодпродукта|названиепродукта|производитель
-------------------------------------------------------
3          |детский парфюм  |moriki doriki

Куда в этой таблице делись продукты №3 производителей avon, chanel и montale?

Так что дело совсем не в магазинах.

" проблема была в отсутствии связи между таблицами " - это правда.
" поставил inner join и все работает верно " - это НЕправда, потому что "dbo.Ассортимент, dbo.Магазин" ничем не отличается от "dbo.Ассортимент inner join dbo.Магазин", поскольку и то, и другое является внутренним соединением (inner join). Проблема в условиях соединения таблиц и в условии отбора данных.
...
Рейтинг: 0 / 0
Запрос заполняет столбцы ненужными данными
    #40127127
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wlr-l,

то что ТС что-то недоговаривает и так понятно
а Вы ошиблись.. если в магазине только 3 наименования ассортимента, а не весь, то при иннер как раз и будет 3 записи
мы же не знаем как он соединил например наименование + производитель
...
Рейтинг: 0 / 0
Запрос заполняет столбцы ненужными данными
    #40127324
Wlr-l
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
" ТС что-то недоговаривает ". Потому, что с его точки зрения это "что-то" не важно. Нам гораздо важнее то, что он сказал. Это как "Дано" в задаче.

В чем я ошибся?

Итак, дано: запрос и две таблицы "как итог должно выйти" и "а выходит". Последняя таблица есть результат данного запроса.

Разберем запрос:
Код: sql
1.
2.
3.
select distinct dbo.Ассортимент.кодпродукта,dbo.Магазин.названиепродукта, dbo.Ассортимент.производитель
FROM dbo.Ассортимент , dbo.Магазин
WHERE dbo.Ассортимент.названиепродукта like '%парфюм%'


Из него следует, что:
1. В таблице Ассортимент есть как минимум три поля: "кодпродукта", "названиепродукта" и "производитель";
2. В таблице Магазин есть как минимум поле "названиепродукта";
3. Таблицы Ассортимент и Магазин между собой не связаны;
4. Строки отбираются по значению поля "названиепродукта" из таблицы Ассортимент;
5. В разделе select поля "кодпродукта" и "производитель" берутся из таблицы Ассортимент, а поле "названиепродукта" берется из таблицы Магазин.

Следовательно, для каждого набора (кодпродукта, производитель) из таблицы Ассортимент будет поставлено в соответствие каждое значение столбца "названиепродукта" из таблицы Магазин.

Из таблицы "а выходит" следует, что в таблице Ассортимент хранятся такие данные:

Код: plaintext
1.
2.
3.
4.
5.
6.
3          |avon
3          |moriki doriki
3          |chanel
3          |montale
27         |avon
27         |moriki doriki
...

Если в столбце "названиепродукта" из таблицы Магазин хранятся три значения "детский парфюм", "женский парфюм" и "мужской парфюм", то приведенный ТС запрос вернет

Код: plaintext
1.
2.
3.
4.
5.
6.
3          |детский парфюм  |avon
3          |женский парфюм  |avon
3          |мужской парфюм  |avon
3          |детский парфюм  |moriki doriki
3          |женский парфюм  |moriki doriki
3          |мужской парфюм  |moriki doriki
...

Получили противоречие с таблицей "а выходит":

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
3          |детский парфюм  |avon
3          |детский парфюм  |moriki doriki
3          |детский парфюм  |chanel
3          |детский парфюм  |montale
27         |женский парфюм  |avon
27         |женский парфюм  |moriki doriki
27         |женский парфюм  |chanel
...

Поэтому я утверждаю, что проблема не в магазинах и не в их количестве.
Вы же утверждаете, что проблема в количестве магазинов ( 22421890 , 22421991 ).

Так же я утверждаю, что замена одной формы записи соединения таблиц (,) на другую (inner join) НЕ решит задачу.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Запрос заполняет столбцы ненужными данными
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (2): Анонимы (1), Yandex Bot 1 мин.
Пользователи онлайн (9): Анонимы (6), Bing Bot, Yandex Bot 1 мин., CerebroSQL 1 мин.
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]