#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)