Я просто пытался создать запрос sql, но не получаю - PullRequest
0 голосов
/ 27 мая 2020

enter image description here

У меня две таблицы. Стол с левой стороны - это Bin, а таблица с правой стороны - Bout. In_id означает порядок, в котором они бьют, Out_id означает порядок, в котором они выбывают из игры. Report1 ниже показывает ответ, который я хочу, то есть тех, кто заключил партнерство. Я не понимаю, как написать запрос для получения данных из отчета 1. Это тот ответ, который мне действительно нужен. Как написать для этого запрос? Мы будем благодарны за вашу помощь!

Ответы [ 3 ]

0 голосов
/ 27 мая 2020
select 
  s1.names,
  s2.names 
from 
  IN_TABLE,
  OUT_TABLE s1,s2 
where 
  s1.IN_ID = s2.IN_ID; 

(где s1 и s2 - псевдонимы)

или

select 
  left_table.name, 
  right_table.name as Report1 
from 
  left_table,
  right_table 
where 
  left_table.IN_ID = right_table.IN_ID

, пожалуйста, дайте нам знать, если это решит вашу проблему. Также см. https://www.youtube.com/watch?v=KTvYHEntvn8 для получения дополнительных сведений.

0 голосов
/ 27 мая 2020

Это многоступенчатый подход. Таблица 1 относится к таблице с левой стороны, т.е. к таблице идентификаторов битов, а таблица 2 относится к таблице с правой стороны, то есть к таблице out id в ваших данных. new.table1, new.table2, new.table3, new.table4 - временные таблицы. Правильное название столбца в соответствии с вашими данными. Надеюсь, вы получите свой результат. Прокомментируйте, если обнаружите проблему.

Create temporary table new.table1
select OUT.ID, IN.ID, Name, (IN.ID - OUT.ID) AS DIFF from table2;


Create temporary table new.table2
select OUT.ID, IN.ID, Name, (OUT.ID + 1) AS NEW.ID from new.table1 where DIFF <= 0;


Create temporary table new.table3
select OUT.ID, IN.ID, Name, DIFF AS NEW.ID from new.table1 where DIFF > 0;


Create temporary table new.table4
select OUT.ID, IN.ID, Name, NEW.ID from new.table2
UNION ALL
select OUT.ID, IN.ID, Name, NEW.ID from new.table3;

---Final Output

select A.Name, B.Name AS Name2 from new.table4 A, table1 B where A.NEW.ID = B.IN.ID;

0 голосов
/ 27 мая 2020

Вам нужно соединение или подзапрос. Давайте посмотрим на соединение

Select 
  leftTable.Name, 
  rightTable.Name 
from 
  leftTable 
  join rightTable 
    on leftTable.IN_ID = rightTable.In_ID

Отредактировано: слева налево таблица и справа направо таблица

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...