Как объединить два столбца из разных таблиц с неодинаковым размером строки

#mysql #sql

#mysql #sql

Вопрос:

У меня есть две таблицы, которые содержат журналы регистрации сотрудников.Первая таблица содержит только данные регистрации, а вторая таблица содержит только данные регистрации. Данные поступают с двух разных компьютеров, и иногда данные о регистрации и выезде не совпадают. Я имею в виду, что могут быть дополнительные данные для таблиц регистрации заезда или отъезда. Я не смог объединить эти два столбца с строками неодинакового размера из разных таблиц с идентификатором сотрудника, и я даже не знаю, возможна ли эта операция (я новичок в SQL).

Цель состоит в том, что я хочу получить все данные сразу. Конечно, я могу перенести данные соответственно на компьютер или в таблицу.

Когда я пробую что-то вроде left join, inner join или full join, он просто удерживает первый элемент первой таблицы для каждого элемента данных второй таблицы, а затем продолжает выполнять для второго элемента первой таблицы, и все происходит так. Я думаю, это из-за неодинакового размера строки в двух столбцах.

 SELECT col1,col2
FROM table1 as t1 LEFT JOIN
     table2 as t2
     ON t1.id = t2.id
WHERE t1.id = 4 AND t2.id = 4 
 

или

 SELECT col1
FROM table1
WHERE id = 4 IN (SELECT col2 FROM table2 WHERE id= 4)
 

id = 4 подходит для моего id, это может быть от 1 до 30.

Комментарии:

1. Пожалуйста, предоставьте примеры данных, желаемые результаты, как вы определяете строки, которые «не совпадают», и что делать в этом случае.

Ответ №1:

используйте union all

 SELECT col1,col2
FROM table1 as t1 LEFT JOIN
     table2 as t2
     ON t1.id = t2.id
WHERE t1.id = 4 AND t2.id = 4 
union all

SELECT col1,0
FROM table1
WHERE id = 4 IN (SELECT col2 FROM table2 WHERE id= 4)