объединение двух операторов sql по вертикали

#php #mysql

#php #mysql

Вопрос:

Я хочу объединить следующие два оператора sql в один, чтобы у меня было всего 23 строки (первый sql имеет 23 строки, а второй — 20 строк из этих 20 строк являются общими с уникальным расположением полей в каждом sql), при этом значения h3dac в первом sql и 2nd sql отображаются в столбцах.

Любая работа вокруг, пожалуйста?

 $sql_u1="select * from (select location1.location as locs, location1.elevation as elvn,location1.group as groups, shiftdata.location as loc1,  shiftdata.date,  shiftdata.shift,  shiftdata.h3dac as h3dac1 from location1 inner join shiftdata on location1.location=shiftdata.location where shiftdata.unit= 1 ORDER BY shiftdata.date desc, shiftdata.shift desc, location1.loc_id limit 23) as a left JOIN  (select location as loc1, date as date2, shift as shift2, h3dac as h3dac2  from shiftdata where unit= 1 ORDER BY date desc, shift desc limit 23 offset 23) as b on a.locs=b.loc1 left join (select location as loc3, date as date3, shift as shift3, h3dac as h3dac3 from shiftdata where unit= 1 ORDER BY date desc, shift desc limit 23 offset 46) as c on a.locs=c.loc3";

$sql_u2="select * from (select location2.location as locs,location2.elevation as elvn, location2.group as groups, shiftdata.location as loc1,  shiftdata.date,  shiftdata.shift,  shiftdata.h3dac as h3dac1 from location2 inner join shiftdata on location2.location=shiftdata.location where shiftdata.unit= 2 ORDER BY shiftdata.date desc, shiftdata.shift desc, location2.loc_id limit 20) as a left JOIN  (select location as loc1, date as date2, shift as shift2, h3dac as h3dac2 from shiftdata where unit= 2 ORDER BY date desc, shift desc limit 20 offset 20) as b on a.locs=b.loc1 left join (select location as loc3, date as date3, shift as shift3, h3dac as h3dac3 from shiftdata where unit= 2 ORDER BY date desc, shift desc limit 20 offset 40) as c on a.locs=c.loc3";
  

Ответ №1:

 $sql ="select * from (sel....
    union  
    select * from (sel....   
  

Вы можете использовать операцию объединения, она вернет вам результат без дубликатов.

Ответ №2:

Если ваши два оператора sql возвращают одинаковые столбцы типов данных и одинаковое количество столбцов, вы можете использовать union.

$sql = $sql_u1. «ОБЪЕДИНЕНИЕ» . $ sql_u2

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

1. выдаст синтаксическую ошибку .. это должно быть «ОБЪЕДИНЕНИЕ», поскольку в конце $ sql_u1 нет пробелов

2. Исправлено. Спасибо.