Автор Тема: вложенный запрос в MySQL  (Прочитано 4136 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Berkut

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 98
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
вложенный запрос в MySQL
« : 03 Мая 2004, 18:58:11 »
товарищи! просветите, неужели в майсикуль нельзя сделать такой запрос
DELETE FROM Cat WHERE SubCatID IN (SELECT SubCatID FROM SubCat WHERE CID=2);  

И можно-ли вообще выполнить подобную задачу не формируя  IN(..., ..., ...)
вручную?

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
вложенный запрос в MySQL
« Ответ #1 : 04 Мая 2004, 01:48:59 »
Berkut
Вложенный - никак (точнее вроде в 5 версии появилось нечто подобное - но это удел экспериментаторов)
Используй (попробуй) PostgreSQL
тебе чего надо? удалить все категории с определенным номером подкатегории?
AS IS...

Оффлайн Berkut

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 98
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
вложенный запрос в MySQL
« Ответ #2 : 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 запроса.
интересно, можно-ли как-нибудь сделать это одним запросом? или может архитектура базы неправильная?

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
вложенный запрос в MySQL
« Ответ #3 : 04 Мая 2004, 21:35:42 »
Цитировать
интересно, можно-ли как-нибудь сделать это одним запросом?

Можно.
Читать в доке начаиная от subselect или поиск по форуму рулит.
2B OR NOT 2B = FF

Оффлайн Berkut

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 98
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
вложенный запрос в MySQL
« Ответ #4 : 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 может приведёшь пример?

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
вложенный запрос в MySQL
« Ответ #5 : 05 Мая 2004, 00:21:53 »
Уже приводил.:)
Я же сказал поиск по форуму рулит.:)
http://forums.webscript.ru/showthread.php?s=&postid=103315#post103315

ThE0ReTiC прав, что subselect не поддерживается до определенной версии.
2B OR NOT 2B = FF

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
вложенный запрос в MySQL
« Ответ #6 : 05 Мая 2004, 09:38:34 »
Berkut
Я бы на самом деле на subselect не расчитывал - ибо это работает тока в 4.1, а не все эту ветку дают...
AS IS...

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28