Главная страница
    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.46 MB
Время: 0.075 c
1-1099484048
Cosinus
2004-11-03 15:14
2004.11.21
Хм... OnDrawCell работает не так, как задумано.


4-1097509885
TeNY
2004-10-11 19:51
2004.11.21
Как установавить саретку в TMemo в нужное положение


14-1099658239
}|{yk
2004-11-05 15:37
2004.11.21
Суперзагадка дня


3-1097248505
бррр...
2004-10-08 19:15
2004.11.21
как обойтись без bde?


3-1098548785
Bend
2004-10-23 20:26
2004.11.21
Упаковка таблицы.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский