SQL запрос в базе данных TecDoc2016 возвращает неверные результаты - PullRequest
0 голосов
/ 12 марта 2020

Я пытаюсь получить правильную категорию из базы данных TecDoc2016 по статье детали.

Сейчас мой запрос на деталь со статьей '96494264' (это датчик давления масла)

"select distinct 
  article_oe.OENbr, 
  passanger_car_trees.* 
from
  `tecdoc`.`article_oe` 
left join 
 `tecdoc`.`suppliers` on `suppliers`.`id` = `article_oe`.`supplierid` 
left join
  `tecdoc`.`article_links` on `article_links`.`supplierid` = `article_oe`.`supplierid` 
  and
   `article_links`.`datasupplierarticlenumber` = `article_oe`.`datasupplierarticlenumber` 
left join
  `tecdoc`.`passanger_car_prd` on `passanger_car_prd`.`id` = `article_links`.`linkageId` 
left join 
 `tecdoc`.`passanger_car_pds` on `passanger_car_pds`.`productid` = `article_links`.`linkageId` 
left join 
  `tecdoc`.`passanger_car_trees` on `passanger_car_trees`.`id` = `passanger_car_pds`.`nodeid` 
where `article_oe`.`OENbr` = 96494264"

возвращает кучу результатов, от клапанов до винтов.

Как я могу сузить результат запроса?

1 Ответ

0 голосов
/ 12 марта 2020

Я думаю, что из-за left join он возвращает больше строк. Попробуйте изменить его на join, если несоответствующие строки не требуются. Было бы лучше добавить условие в join вместо where.

select distinct 
  article_oe.OENbr, 
  passanger_car_trees.* 
from
  tecdoc.article_oe 
join 
 tecdoc.suppliers on suppliers.id = article_oe.supplierid and article_oe.OENbr = 96494264
join
  tecdoc.article_links on article_links.supplierid = article_oe.supplierid 
  and
   article_links.datasupplierarticlenumber = article_oe.datasupplierarticlenumber 
join
  tecdoc.passanger_car_prd on passanger_car_prd.id = article_links.linkageId 
join 
 tecdoc.passanger_car_pds on passanger_car_pds.productid = article_links.linkageId 
join 
  tecdoc.passanger_car_trees on passanger_car_trees.id = passanger_car_pds.nodeid 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...