Перейти к содержанию
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

Либо создать третью таблицу и включить в нее записи из двух или в первую включить записи из второй таблицы, которых нет в первой. я так это вижу.
перебор таблицы и операторы Insert и delete

Ссылка на комментарий
  • 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 пользователей онлайн

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