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

Тема в разделе "Базы данных", создана пользователем RedRabbit, 7 апр 2014.

Статус темы:
Закрыта.
Модераторы: latteo
  1. RedRabbit

    RedRabbit

    Регистр.:
    11 июл 2008
    Сообщения:
    606
    Симпатии:
    250
    Есть запрос
    Код:
    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 --------
    Помогло. Спасибо всем.
     
    Последнее редактирование модератором: 6 май 2014
    Шумадан нравится это.
  2. Rollo

    Rollo Постоялец

    Регистр.:
    28 сен 2012
    Сообщения:
    53
    Симпатии:
    20
    SELECT * FROM table4 WHERE field1 IN (SELECT DISTINCT field2 FROM table5 WHERE field3='idina' AND length(field7)>100)

    Отпишитесь плз помогло ли
     
    RedRabbit и Шумадан нравится это.
  3. Шумадан

    Шумадан Хабарра!!11

    Регистр.:
    6 фев 2008
    Сообщения:
    1.722
    Симпатии:
    2.097
    да, вместо = нужно использовать IN так как результатом подселекта будет рекордсет, а не одна запись
     
    SilverGhost и RedRabbit нравится это.
  4. RedRabbit

    RedRabbit

    Регистр.:
    11 июл 2008
    Сообщения:
    606
    Симпатии:
    250
    Проверю. А если еще одно вложение? Еще один IN? Так правильно?
    Код:
    SELECT * FROM ...IN ( SELECT * FROM ...IN ())
     
  5. DesoTTo

    DesoTTo Создатель

    Регистр.:
    21 дек 2012
    Сообщения:
    48
    Симпатии:
    12
    Да, вполне к MS SQL или Ora использовал, просто как правило можно обойтись без усложнения используя вложенные селекты для основной выборки и потом этот большой "кусок" вкладываешь в IN. Тут всё же целиком нужно видеть картину, может там вообще иначе можно извратиться).

    http://msdn.microsoft.com/ru-ru/library/ms189575(v=sql.105).aspx

    Отпишитесь помогло ли, а то мы переживаем :)
     
    RedRabbit нравится это.
  6. Rollo

    Rollo Постоялец

    Регистр.:
    28 сен 2012
    Сообщения:
    53
    Симпатии:
    20
    будет работать, однако, уделите внимание оптимизации:
    - индексы по полям по которым вы делаете выборку (важно),
    - выбирайте только те поля которые вам реально нужны
    иначе будет неоправданный расход памяти и будет долго думать
    Удачи!

    Если покажете живой запрос - подскажу
     
Статус темы:
Закрыта.