Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.21;
Скачать: CL | DM;

Вниз

выборка из двух таблиц - ничего сложного?   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.023 c
3-1098442217
Олеся
2004-10-22 14:50
2004.11.21
Добавление записей в БД


14-1099494164
yanker
2004-11-03 18:02
2004.11.21
Удаление версии файла dll


14-1099537717
Думкин
2004-11-04 06:08
2004.11.21
С днем рождения! 4 ноября


3-1098451721
Ivan_
2004-10-22 17:28
2004.11.21
колонка типа TdxDBGridButtonColumn какая кнопка нажата


3-1098692061
starling13
2004-10-25 12:14
2004.11.21
IBDataSet, IBTable