SQLite Усложнить запрос

Статус
В этой теме нельзя размещать новые ответы.

RedRabbit

Мой дом здесь!
Регистрация
11 Июл 2008
Сообщения
607
Реакции
256
Есть запрос
Код:
SELECT DISTINCT field2 FROM table5 WHERE field3='idina' AND length(field7)>100
Получаем много строк...
А теперь мне надо из таблицы table4
Код:
SELECT * FROM table4 WHERE field1='то что в первом запросе'
Как сделать в один запрос???

Если так
Код:
SELECT * FROM table4 WHERE field1= (SELECT DISTINCT field2 FROM table5 WHERE field3='idina' AND length(field7)>100)

То у меня выводится только одна строка:(

--------- UPD 10 апр 2014 --------
Помогло. Спасибо всем.
 
Последнее редактирование модератором:
SELECT * FROM table4 WHERE field1 IN (SELECT DISTINCT field2 FROM table5 WHERE field3='idina' AND length(field7)>100)

Отпишитесь плз помогло ли
 
да, вместо = нужно использовать IN так как результатом подселекта будет рекордсет, а не одна запись
 
Проверю. А если еще одно вложение? Еще один IN? Так правильно?
Код:
SELECT * FROM ...IN ( SELECT * FROM ...IN ())
 
Проверю. А если еще одно вложение? Еще один IN? Так правильно?
Код:
SELECT * FROM ...IN ( SELECT * FROM ...IN ())
Да, вполне к MS SQL или Ora использовал, просто как правило можно обойтись без усложнения используя вложенные селекты для основной выборки и потом этот большой "кусок" вкладываешь в IN. Тут всё же целиком нужно видеть картину, может там вообще иначе можно извратиться).

Для просмотра ссылки Войди или Зарегистрируйся

Отпишитесь помогло ли, а то мы переживаем :)
 
Проверю. А если еще одно вложение? Еще один IN? Так правильно?
Код:
SELECT * FROM ...IN ( SELECT * FROM ...IN ())
будет работать, однако, уделите внимание оптимизации:
- индексы по полям по которым вы делаете выборку (важно),
- выбирайте только те поля которые вам реально нужны
иначе будет неоправданный расход памяти и будет долго думать
Удачи!

Если покажете живой запрос - подскажу
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху