Forum Webscript.Ru
Общие => Базы данных => Тема начата: Jean от 22 Июня 2004, 15:26:58
-
народ помогите с вложенным запросом
такой выдает ошибку:
select o.name
from object o
where o.id not in (select o.id
from object o
where o.deleted = 1);
у меня стоит MySQL 4.0.1
на ней вроде есть поддержка вложенных запросов, значит
запрос все-таки неправильно написан
-
SELECT name
FROM object
WHERE deleted != 1
-
Мне так нельзя.
возможен вариант напрмер, что будет две записи с именем \'object_name\'
и у одной записи будет deleted = 1, а у другой deleted = 0
так вот твой запрос покажет в таком случае ту, у которой
deleted =0, а мне такая запись не нужна
(я немного неправильно построил запрос в самом начале)
-
>> я немного неправильно построил запрос в самом начале
мило :-)
SELECT name, SUM(deleted) AS s
FROM object
GROUP BY name
HAVING s=0
Изврат немного, правда...
-
Зачем здесь SUM(deleted)?
====
Вопрос снимаю. Кошмар +)
-
о зашебись!, все работает
спасибо
не думал, что есть такое простое решение
-
а вообще то не совсем то что нужно
предположим у меня есть
три записи
name,deleted:
(a,0)
(a,1)
(a,0)
то есть мне нужен такой запрос, который выводит последнюю из записей с одинаковым именем, если при этом у нее deleted <> 1
таблица
(a,0)
(a,1)
(a,0)
(b,0)
(b,1)
результат:
(a,0)
--------------
таблица
(a,0)
(a,1)
(b,0)
(b,1)
(b,0)
результат:
(b,0)
---------
таблица
(a,0)
(a,1)
(a,0)
(b,0)
(b,1)
(b,0)
результат:
(a,0)
(b,0)
-----------------
таблица
(a,0)
(a,1)
(b,0)
(b,1)
результат:
--
-
Jean
я пас... Ты меняшь условия задачи всё время... :-))
Скажу только, что вот этого
>> последнюю из записей
не существует.
-
в смысле не существует? последняя - я имею ввиду - с наибольшим id
то есть к примеру:
таблица
(1,a,0)
(2,a,1)
(3,a,0)
(4,b,0)
(5,b,1)
(6,b,0)
результат:
(3,a,0)
(6,b,0)
или ты что-то другое подразумеваешь под несуществованием последней?
-
SELECT name, SUM(deleted) AS s
FROM object
HAVING s=0
ORDER BY name DESC
LIMIT 0,1
-
спасибо, конечно, но не работает :))
(1,a,0)
(2,a,1)
(3,a,0)
(4,b,0)
(5,b,1)
(6,b,0)
выдает результат:
(пусто)
и вообще если я правильно понял, этот запрос
выберет 1ую строку в результате (limit 0,1)
а вот эта часть
select *
from object o
having sum(o.deleted) =0
order by o.name
не выдаст ничего потому что если есть три записи с deleted = 0,1,0, то сумма(deleted)=1
в общем что-то не работает
-
Попробуй вернуть на место GROUP BY name, у меня сейчас нет возможности тестировать :(