Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.037 c
1-1099519559
BadProg
2004-11-04 01:05
2004.11.21
TClientSocket в Delphi 7


1-1099835852
Comp
2004-11-07 16:57
2004.11.21
Обмен данными между двумя моими приложениями


14-1099566757
Кирилл
2004-11-04 14:12
2004.11.21
Координаты точки


14-1099469626
syte_ser78
2004-11-03 11:13
2004.11.21
свойства доков


3-1098868922
sanek
2004-10-27 13:22
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский