Как объединить 2 таблицы подробностей - MySql - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть 5 таблиц с именами:

tbl_rawmaterial

tbl_rawmaterialpurchaseorder // master table 1
tbl_rawmaterialpurchaseorderdetail // detail table 1

tbl_rawmaterialpurchase // master table 2
tbl_rawmaterialpurchasedetail // detail table 2

Теперь tbl_rawmaterial имеют столбцы:

materialId
materialName
specs
unit

И tbl_rawmaterialpurchaseorder имеют столбцы:

poId
... // and more

И tbl_rawmaterialpurchase имеют столбцы:

purchaseId
purchaseorderId
... // and more

Таблица сведений tbl_rawmaterialpurchaseorderdetail имеет столбцы:

id
masterId
itemId
qty
rate

Таблица сведений tbl_rawmaterialpurchasedetail имеет столбцы:

id
masterId
itemId
batchNo
qty
rate

это мой запрос:

SELECT
dbname.tbl_rawmaterialpurchasedetail.id,
dbname.tbl_rawmaterialpurchasedetail.masterId,
dbname.tbl_rawmaterialpurchasedetail.itemId,
dbname.tbl_rawmaterialpurchasedetail.batchNo,
dbname.tbl_rawmaterialpurchasedetail.qty,
dbname.tbl_rawmaterialpurchasedetail.rate,
dbname.tbl_rawmaterialpurchaseorderdetail.qty AS orderedqty,
dbname.tbl_rawmaterial.specs,
dbname.tbl_rawmaterial.unit
FROM
dbname.tbl_rawmaterialpurchasedetail,
dbname.tbl_rawmaterialpurchase,
dbname.tbl_rawmaterialpurchaseorder,
dbname.tbl_rawmaterialpurchaseorderdetail,
dbname.tbl_rawmaterial
WHERE
dbname.tbl_rawmaterialpurchase.purchaseId = 
dbname.tbl_rawmaterialpurchasedetail.masterId AND
dbname.tbl_rawmaterialpurchaseorder.poId = 
dbname.tbl_rawmaterialpurchaseorderdetail.masterId AND
dbname.tbl_rawmaterial.materialId = 
dbname.tbl_rawmaterialpurchasedetail.itemId AND
dbname.tbl_rawmaterialpurchaseorderdetail.itemId = 
dbname.tbl_rawmaterialpurchasedetail.itemId AND
dbname.tbl_rawmaterialpurchasedetail.masterId = 4 AND
dbname.tbl_rawmaterialpurchaseorder.poId = 
dbname.tbl_rawmaterialpurchase.purchaseorderId

До этого данные в таблице

tbl_rawmaterialpurchaseorder и tbl_rawmaterialpurchaseorderdetail

копируются в

tbl_rawmaterialpurchase и tbl_rawmaterialpurchasedetail

Я пытался использовать join, но результат получается другим.

Мне нужна помощь, чтобы преобразовать это в join

Спасибо.

1 Ответ

0 голосов
/ 03 декабря 2018

Вы должны использовать внутреннее соединение.

SELECT
  rmpd.id,
  rmpd.masterId,
  rmpd.itemId,
  rmpd.batchNo,
  rmpd.qty,
  rmpd.rate,
  rmpod.qty AS orderedqty,
  rm.specs,
  rm.unit
FROM dbname.tbl_rawmaterialpurchase rmp 
  INNER JOIN dbname.tbl_rawmaterialpurchasedetail rmpd ON rmp.purchaseId = rmpd.masterId
  INNER JOIN dbname.tbl_rawmaterial rm ON rmpd.itemId = rm.materialId
  INNER JOIN dbname.tbl_rawmaterialpurchaseorder rmpo ON rmp.purchaseorderId = rmpo.poId
  INNER JOIN dbname.tbl_rawmaterialpurchaseorderdetail rmpod ON (rmpo.poId = rmpod.masterId AND rmpod.itemId = rmpd.itemId)
WHERE
  rmpd.masterId = 4 

Примечание: лучше использовать псевдоним для таблиц, чтобы запрос был более читабельным.

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