Форум: "Базы";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];
Внизвыборка из двух таблиц - ничего сложного? Найти похожие ветки
← →
ka © (2004-10-22 19:08) [0]Здравствуйте. Подскажите с SQL - простым как сама жизнь и непонятным как женщина :)
Имеется две таблицы с полями примерно такими:
1-я goodsmain
pSysNo | pName | pColor
pSysNo - ключ
2-я goodssecond
sCode | sSysNo | sSize
goodssecond связана с goodsmain через pSysNo -> sSysNo
Для записи в 1-й таблице существует несколько записей во-второй. Это таблицы товаров.
То есть для определенного товара заданного названием и цветом существуют разные
размеры.
Так вот нужно сделать запрос.
Выбрать те товары, у которых количество разных размеров осталось допустим < 3. Именно разных, то есть если два одинаковых размера, это один.
И еще запрос.
Выбрать товары, у которых количество едениц товара (независимо от размера) тоже допустим < 3. То есть у которых количество записей во второй таблице < 3.
Надеюсь доступно объяснил. Спасибо.
← →
Пуртик (2004-10-22 20:39) [1]
> Выбрать те товары, у которых количество разных размеров
> осталось допустим < 3. Именно разных, то есть если два одинаковых
> размера, это один.
поподробнее
> рать товары, у которых количество едениц товара (независимо
> от размера) тоже допустим < 3. То есть у которых количество
> записей во второй таблице < 3.
select sCode, count(sSysNo)
from goodssecond
group by sCode
having count(sSysNo)<3
← →
ka © (2004-10-22 20:58) [2]Меня не поняли. Когда я говорю выбрать товар, я имею ввиду выбрать товар из первой таблицы - goodsmain, то есть выбрать pSysNo, pName и pColor. Допустим pName = "джинсы", pColor = "синий", так вот синие джинсы разных у которых размеров осталось меньше трех или которых воообще осталось меньше трех мне и нужно выбрать. Вот.
← →
vecna © (2004-10-23 01:48) [3]create table goodsmain (
pSysNo number primary key,
pName varchar2(10),
pColor number
);
create table goodssecond (
sCode number primary key,
sSysNo number references goodsmain (pSysNo),
sSize number
);
begin
insert into goodsmain values (1, "один", 1);
insert into goodsmain values (2, "один", 2);
insert into goodsmain values (3, "один", 3);
insert into goodsmain values (4, "один", 4);
insert into goodsmain values (5, "два", 3);
insert into goodsmain values (6, "два", 4);
insert into goodsmain values (7, "три", 4);
insert into goodssecond values (1, 1, 11);
insert into goodssecond values (2, 1, 12);
insert into goodssecond values (3, 1, 12);
insert into goodssecond values (4, 2, 11);
insert into goodssecond values (5, 2, 12);
insert into goodssecond values (6, 3, 11);
insert into goodssecond values (7, 3, 12);
insert into goodssecond values (8, 3, 13);
insert into goodssecond values (9, 3, 14);
end;
select *
from goodsmain
where pSysNo in (
select distinct sSysNo
from goodssecond
group by sSysNo
having count(1) = 3
)
← →
vecna © (2004-10-23 01:49) [4]пардон, не =3, а <3 =))
← →
vecna © (2004-10-23 01:51) [5]ой нет, ху...ю написал =)
← →
vecna © (2004-10-23 02:04) [6]наверное так:
select *
from goodsmain m
where exists (
select sSysNo
from goodssecond
where sSysNo = m.pSysNo
group by sSysNo
having count(distinct(sSize)) < 3
)
тяжело думать в пятницу =)
← →
MORA (2004-10-23 19:58) [7]А какая БД у тебя? Есси SQL Server 2000, можно попробовать поиграться с ANY (или SOME).
У меня вот так заработало в Access и Interbase.
select *
from goodsmain
where exists (
select distinct sSize
from goodssecond
where sSysNo = goodsmain.pSysNo
group by sSize
having count(sSize) < 3
)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.042 c