MYSQL подзапрос с объединением - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь получить записи из 4 таблиц и хочу использовать подзапрос в левом соединении.Итак, в основном, у меня есть таблица a - это таблица открытий o, id, o.namesdesc

table b - это таблица всех проектов b.id, b.titledesc, b, status, b.edate

таблица a_b - это таблица для всех открытий, которые изменились в проектах, действует как соединительная таблица для одного ко многим o.id, b.id

table br - это таблица отношений с другими проектамиb.id b_rel_code (это также b.id, как и в случае с другими проектами)

Я хочу получить все открытия, проверить, есть ли у них коды проектов из таблицы a_b, получить отношение кодов проектовс другими кодами проектов проверьте статус проектов и получите все конечные даты проектов

Буду очень признателен за вашу помощь в этом.Я бился головой с незапамятных времен.Я думаю, что просто не вижу этого через

SELECT 
  o.id,
  o.namesdesc,
  GROUP_CONCAT(ab.pcode) as junctionpcode,
  GROUP_CONCAT(br.scode) as proj_link_code, 
  GROUP_CONCAT(b.status) 
FROM table_ab as ab 
  Left JOIN tablea as o on ab.oid = o.id 
  Left Join tableb as b on ab.pcode= b.id 
  LEFT Join tablebr as br on br.b_rel_code=b.id 
where b.status='E' 
GROUP BY o.id order by junctionpcode

Большое спасибо, хорошо, возможно, я не очень хорошо объяснил.В этом могут помочь примерные данные

Таблица содержит описание идентификаторов открытий, namedesc 1, test desc1 2, test desc2

Список таблиц всех проектов

pcode,pname,status,edate
001,test pr1,E,30-10-2017
002,test pr2,E,30-05-2017
003,test pr3,A,30-10-2018

Таблица br - это таблица отношений для проектов, связанных с другими проектами

brid pcode rel_pcode
1    001    003
2    003    001

Таблица a_b, которая является таблицей соединений между tablea и tableb

abid pcode id
1    001   1
2    002   2
3    003   3 

Так чего я хочу достичьполучить все открытия (из таблицы), с которыми связаны коды проектов (из таблицы_b), и получить статус и конечные даты проектов только со статусом E (из таблицы b).Но он должен учитывать, имеет ли этот код проекта ссылку на код проекта (из таблицы br), который имеет статус и редактирование.

Выходные данные, которые я ожидаю, равны

a.id,concat(pcode+relcodeany),concat(pstatus,relstatus),concat(pedate,relcodeedate)
1   ,(001,003),(E,A),(30-10-2017,30-10-2018)

Я надеюсь, что предоставил достаточно информации.Извините за длинный пост

1 Ответ

0 голосов
/ 12 октября 2018

В чем была проблема с запросом?

Вы не добавили пример данных или ожидаемый результат, но пара примечаний из запроса:

  1. таблица tablebr соединена через таблицу tableb (br.b_rel_code = b.id), если tableb не содержит никаких строк для ab.pcode, и вы не получите никаких строк из tablebr
  2. Предложение b.status = 'E' where превращает левое соединение для tableb в обычное соединение (только строки, которые соответствуютбудет включен).Если вы хотите, чтобы левое соединение было эффективным, переместите условие после ВКЛ (on ab.pcode= b.id and b.status='E')

Пожалуйста, предоставьте пример данных и ожидаемый результат.

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