Перейти к содержанию
Fire Monkey от А до Я
  • 0

Запрос к SQLlite


Kitty

Вопрос

Опубликовано

Гуру SQLlite подскажите, пожалуйста, синтаксис для запроса.

У меня есть две таблицы. Их надо объединить как на рисунке. Предполагаю, что это решение:
SELECT * FROM regesteron FULL OUTER JOIN regesteroff ON
regesteron.dataon=regesteroff.dataoff;

Однако выяснилось, что sqllite не поддерживает FULL OUTER JOIN.
Как заменить?

pick.jpg

Рекомендуемые сообщения

  • 0
Опубликовано (изменено)

попробуйте так

SELECT c.dataoff, 
(SELECT b.dataon FROM regesteron as b WHERE b.idpkey = c.idpkey) as dataon 
FROM regesteroff as c

на 100% не уверен писал на ходу может с полями что напутал

Изменено пользователем master webs
  • 0
Опубликовано (изменено)
Цитата

SELECT regesteron.dataon, regesteroff.dataoff
FROM   regesteron 
       LEFT JOIN regesteroff 
          ON regesteron.dataon = regesteroff.dataoff
UNION ALL
SELECT regesteron.dataon, regesteroff.dataoff
FROM   regesteroff
       LEFT JOIN regesteron
          ON regesteron.dataon = regesteroff.dataoff


 

Изменено пользователем Rusland
  • 0
Опубликовано

Большое спасибо.

Пытаюсь модифицировать, чтобы получить две колонки как на картинке в первом посте:

SELECT regesteron.datatimeon, regesteroff.datatimeoff
FROM   regesteron
       LEFT JOIN regesteroff
          ON regesteron.dataon = regesteroff.dataoff
UNION ALL
SELECT regesteron.datatimeon, regesteroff.datatimeoff
FROM   regesteroff
       LEFT JOIN regesteron
          ON regesteron.dataon = regesteroff.dataoff

Однако получаю дубль одной записи. Как поправить? Спасибо.

1.jpg

  • 0
Опубликовано (изменено)

мб просто UNION, он по определению отсеивает дубли

select ron.datatimeon, roff.datatimeoff
from regesteron ron left join regesteroff roff on ron.dataon = roff.dataoff
union
select ron.datatimeon, roff.datatimeoff
from regesteroff roff left join regesteron ron on ron.dataon = roff.dataoff

 

Изменено пользователем beklexx
  • 0
Опубликовано
52 минуты назад, beklexx сказал:

мб просто UNION, он по определению отсеивает дубли


select ron.datatimeon, roff.datatimeoff
from regesteron ron left join regesteroff roff on ron.dataon = roff.dataoff
union
select ron.datatimeon, roff.datatimeoff
from regesteroff roff left join regesteron ron on ron.dataon = roff.dataoff

 

Насколько я помню, Union это простое соединение запросов и никакие дубли он отсеивать не может.

  • 0
Опубликовано
-- Выбираем все что совпадает
select ron.datatimeon, roff.datatimeoff
from regesteron ron inner join regesteroff roff on ron.dataon = roff.dataoff
union
-- Выбираем из ron все чего нет в roff
select ron.datatimeon, roff.datatimeoff
from regesteron ron left join regesteroff roff on ron.dataon = roff.dataoff
where roff.datatimeoff is null
union
-- Выбираем из roff все чего нет в ron
select ron.datatimeon, roff.datatimeoff
from regesteroff roff left join regesteron ron on ron.dataon = roff.dataoff
where ron.datatimeon is null

 

  • 0
Опубликовано
2 часа назад, Vitaldj сказал:

Насколько я помню, Union это простое соединение запросов и никакие дубли он отсеивать не может.

по крайней мере в ms sql он именно этим и отличался от UNION ALL

гугл вроде подтверждает первой ссылкой на sqlite union: http://www.tutorialspoint.com/sqlite/sqlite_unions_clause.htm

The SQLite UNION clause/operator is used to combine the results of two or more SELECT statements without returning any duplicate rows.

The UNION ALL operator is used to combine the results of two SELECT statements including duplicate rows.

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...