Хитрый запрос (...ну или по крайней мере не простой)

Руслан4141
Дата: 13.02.2004 07:26:23
Здравствуйте, уважаемые.
Такая ситуация - есть две таблицы данных ( А и Б ) и одно таблица связей между А и Б - связи типа *->* (что в вольном переводе с англ означает стенка на стенку или МНОГО -> МНОГО) - Вот.
в таблице А есть поле номер , а таблице Б есть поле Класс продукта ( значение >= -1). соответственно нужно выбрать первые (вторые, третьи ....и т.д. ) N уникальных записей из таблицы А отсортированных по полю Класс продукта - .....уже наверное все попробовал....не знаю что делать...
не методами sql - shit какой -то получается
Konrad
Дата: 13.02.2004 08:22:10
Как-то непонятно Вы тут написали, хоть бы определение таблиц привели...

SELECT А.* FROM А, Б 

WHERE ...связь...
ORDER BY Б.класс продукта


По какому полю связывать эти таблицы собираетесь?
руслан4141
Дата: 13.02.2004 08:39:45
\d tradelinks
Table "public.tradelinks"
Column | Type | Modifiers
--------+------------------------+------------------------------------------------------------
id | integer | not null default nextval('public.tradelinks_id_seq'::text)
url | character varying(70) |
view | character varying(50) |
title | character varying(150) |
code | integer | default 0

\d classifier;
Table "public.classifier"
Column | Type | Modifiers
-------------+-----------------------+------------------------------------------------------------
id | integer | not null default nextval('public.classifier_id_seq'::text)
level | smallint | not null
code | smallint | not null
title | character varying(60) |
description | text |
about | text |
parentid | integer |
Indexes: classifier_pkey primary key btree (id)
Foreign Key constraints: $1 FOREIGN KEY (parentid) REFERENCES classifier(id) ON UPDATE CASCADE ON DELETE SET NULL

\d tl2sb
Table "public.tl2sb"
Column | Type | Modifiers
--------+---------+-------------------------------------------------------
id | integer | not null default nextval('public.tl2sb_id_seq'::text)
tlid | integer |
cid | integer |
date | date | default ('now'::text)::date
Indexes: tl2sb_pkey primary key btree (id)

tl2sb.cid = это значение поля classifier.id
tl2sb.tlid = это значение поля tradelinks.id
Вот

\d tl2sb
Table "public.tl2sb"
Column | Type | Modifiers
--------+---------+-------------------------------------------------------
id | integer | not null default nextval('public.tl2sb_id_seq'::text)
tlid | integer |
cid | integer |
date | date | default ('now'::text)::date
Indexes: tl2sb_pkey primary key btree (id)

SELECT tlid , cid from tl2sb ORDER BY cid;
tlid | cid
------+-----
2 | -1
8 | -1
1 | 0
3 | 0
4 | 0
5 | 0
6 | 0
7 | 0
8 | 0
9 | 5
8 | 5
8 | 9
1 | 9
и имея такой список именно в этом порядке
нужно разбить его на порции - уникальные tlid, - то есть первая порция в 4 уникальные tlid - это 2 8 1 3 , вторая порция - это 4 5 6 7, третья порция - (8 пропускаем ), 9 (8 пропускаем), (8 пропускаем), (1 пропускаем) и далее по списку ( если таковой имеется)
LeXa NalBat
Дата: 13.02.2004 12:05:52
SELECT tlid, min(cid) as min_cid from tl2sb GROUP BY tlid ORDER BY min_cid;

Это вам подойдет? Если нет, то расскажите, что вы хотите делать с этими "порциями-четверками" далее?
Руслан4141
Дата: 16.02.2004 08:32:39
Это то что мне нужно спасибо большое!