Forum Webscript.Ru

Общие => Базы данных => Тема начата: Berkut от 03 Мая 2004, 18:58:11

Название: вложенный запрос в MySQL
Отправлено: Berkut от 03 Мая 2004, 18:58:11
товарищи! просветите, неужели в майсикуль нельзя сделать такой запрос
DELETE FROM Cat WHERE SubCatID IN (SELECT SubCatID FROM SubCat WHERE CID=2);  

И можно-ли вообще выполнить подобную задачу не формируя  IN(..., ..., ...)
вручную?
Название: вложенный запрос в MySQL
Отправлено: ThE0ReTiC от 04 Мая 2004, 01:48:59
Berkut
Вложенный - никак (точнее вроде в 5 версии появилось нечто подобное - но это удел экспериментаторов)
Используй (попробуй) PostgreSQL
тебе чего надо? удалить все категории с определенным номером подкатегории?
Название: вложенный запрос в MySQL
Отправлено: Berkut от 04 Мая 2004, 02:41:58
Цитировать
ThE0ReTiC:
Используй (попробуй) PostgreSQL

Да я-бы с радостью, только у хостера его нет. И вообще мало хостеров PostgreSQL
Цитировать
ThE0ReTiC:
тебе чего надо? удалить все категории с определенным номером подкатегории?

малость обшибся.
DELETE FROM Goods WHERE SubCatID IN (SELECT SubCatID FROM SubCat WHERE CID=2);
 нужно удалить все товары всех под-категорий(SubCatID), относящихся к определённой категории(CID)
(есть 3 таблицы: 1)категории, 2)подкатегории(связаны с ид категорий), 3)товары(связаны с id подкатегорий)
пришлось сделать в 2 запроса.
интересно, можно-ли как-нибудь сделать это одним запросом? или может архитектура базы неправильная?
Название: вложенный запрос в MySQL
Отправлено: Chs от 04 Мая 2004, 21:35:42
Цитировать
интересно, можно-ли как-нибудь сделать это одним запросом?

Можно.
Читать в доке начаиная от subselect или поиск по форуму рулит.
Название: вложенный запрос в MySQL
Отправлено: Berkut от 04 Мая 2004, 23:05:21
Chs говоришь одно, ThE0ReTiC - другое, и кто-же прав?
вот что нашёл в мане о сабселект:
``Find number, dealer, and price of the most expensive article.\'\'

In ANSI SQL this is easily done with a subquery:

SELECT article, dealer, price
FROM   shop
WHERE  price=(SELECT MAX(price) FROM shop)

In MySQL (which does not yet have subselects), just do it in two steps:

Get the maximum price value from the table with a SELECT statement.
Using this value compile the actual query:
SELECT article, dealer, price
FROM   shop
WHERE  price=19.95

Chs может приведёшь пример?
Название: вложенный запрос в MySQL
Отправлено: Chs от 05 Мая 2004, 00:21:53
Уже приводил.:)
Я же сказал поиск по форуму рулит.:)
http://forums.webscript.ru/showthread.php?s=&postid=103315#post103315

ThE0ReTiC прав, что subselect не поддерживается до определенной версии.
Название: вложенный запрос в MySQL
Отправлено: ThE0ReTiC от 05 Мая 2004, 09:38:34
Berkut
Я бы на самом деле на subselect не расчитывал - ибо это работает тока в 4.1, а не все эту ветку дают...