|
|
|
Как сделать триггер ?
|
|||
|---|---|---|---|
|
#18+
Есть 3 таблицы : ТАБЛИЦА 2_1. ПОДПИСЧИКИ • Код подписчика • ФИО • Населенный пункт • почтовый индекс ТАБЛИЦА 2_2. ИЗДАHИЯ • код издания • название • цена за месяц(обычная) • цена за месяц(льготная) • тираж • Число подписчиков (связать с таблицей Подписка) • тип издания (жуpнал, газета, ...) • ФИО редактора ТАБЛИЦА 2.3. ПОДПИСКА • код подписчика • код издания • дата подписки • на сколько месяцев • признак льготы Как при помощи триггеров установить связь между полем «Число подписчиков» и Таблицей «Подписка» ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2006, 16:41 |
|
||
|
Как сделать триггер ?
|
|||
|---|---|---|---|
|
#18+
Alekcei_dvoКак при помощи триггеров установить связь между полем «Число подписчиков» и Таблицей «Подписка» ? Никак. Триггер не может "установить связь". Он не для этого предназначен. Триггер - это некоторая процедура, которая запускается при наступлении определенного события. Если имеется в виду, что при создании/удалении/модификации записей в таблице "Подписка" должно меняться значение в соответствующем поле таблицы "Издания", то, в принципе, ничего особо сложного. Триггер всегда выполняется для одной записи за раз. Т.е. если даже используется некая групповая команда на вставку или модификацию, физически всегда будет происходить модификация по одной записи за раз. Поэтому, надо просто увеличить на 1 значение при вставке записи, уменьшить на 1 при удалении и сделать и то и другое при модификации (вместо одного издания подписались на другое). Это можно сделать командой UPDATE-SQL. Общую часть почитай здесь Триггер ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2006, 18:08 |
|
||
|
Как сделать триггер ?
|
|||
|---|---|---|---|
|
#18+
Ладно, пока без него попробую :) Нужно для это БД составить запрос : Найти и вывести список названий журналов согласно условию: на них подписались все подписчики Как это сделать ? Я написал, но он почему то выводит все названия журнало ? SELECT izd.izd_name; FROM db!izd, db!pod; WHERE izd_type='j'; AND reccount(pod.pod_id) = ( SELECT count(*) ; FROM db!podpsk, db!izd ; WHERE izd.izd_id = podpsk.izd_id ); INTO TABLE q2_tbl report form q2_rprt preview ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2006, 18:25 |
|
||
|
Как сделать триггер ?
|
|||
|---|---|---|---|
|
#18+
В общем случае, Reccount() вернет не то, что нужно. Даже если не обращать внимания, что ты в качестве параметра указал непонятно что, но Reccount() учитывает в том числе и записи помеченные как удаленные. Это значит, что количество подписчиков надо подсчитывать отдельно. Отдельным запросом. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Смысл в том, что из таблицы ПОДПИСКА отбираются только те коды журналов, которым соответствует количество уникальных подписчиков равных общему количеству подписчиков. Я исхожу из предположения, что один и тот же подписчик может подписаться несколько раз на один и тот же журнал. Отсюда COUNT(DISTINCT ...), чтобы подсчитать именно уникальные значения кодов подписчиков ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2006, 23:27 |
|
||
|
|

start [/forum/topic.php?fid=41&tid=1592667]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
190ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 218ms |
| total: | 501ms |

| 0 / 0 |
