Нужно удалить дубликаты строк - PullRequest
0 голосов
/ 31 июля 2009

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

Ниже приведен пример данных, я просто хочу увидеть инженера 1 и заказанные детали.

Используются таблицы

  • Tbl_property - просто чтобы получить адрес и т. Д.
  • tbl_repair_order - поднятый заказ
  • tbl_repair_visit - все посещения снова регистрируются в порядке, где хранятся имена обоих инженеров
  • tbl_partorder - где части связаны с заказом

Пример данных:

  • Заказ: 123 - Инженер1 - Часть 1
  • Заказ: 123 - Инженер1 - Часть 2
  • Заказ: 123 - Инженер2 - часть 1
  • Заказ: 123 - Инженер2 - часть 2

-

 SELECT     dbo.tbl_repair_order.CONTRACT, dbo.tbl_property.PROPADDRESS, dbo.tbl_property.PROPNUMBER, dbo.tbl_property.FULLADDRESS, 
                  dbo.tbl_repair_order.ORDERID, dbo.tbl_repair_order.THEIRREF, dbo.tbl_repair_order.ORIGIN, dbo.tbl_repair_order.RAISEDDATE AS JOBRAISED, 
                  dbo.tbl_repair_order.ENGINEER AS ENG1, dbo.tbl_repair_visit.ENGINEER, dbo.tbl_partorder.EXSUPPLIERORDERID, dbo.tbl_partorder.SUPPLIER, 
                  dbo.tbl_partorder.RAISED AS PARTRAISED, dbo.tbl_partorder.CODE, dbo.tbl_partorder.ITEM, dbo.tbl_partorder.UNITCOST, dbo.tbl_partorder.QUANTITY, 
                  dbo.tbl_partorder.COST, dbo.tbl_partorder.EXPECTED, dbo.tbl_repair_visit.Status
FROM         dbo.tbl_property INNER JOIN
                      dbo.tbl_repair_order ON dbo.tbl_property.PROPREF = dbo.tbl_repair_order.PROPREF INNER JOIN
                      dbo.tbl_partorder ON dbo.tbl_repair_order.ORDERID = dbo.tbl_partorder.ORDERID LEFT OUTER JOIN
                      dbo.tbl_repair_visit ON dbo.tbl_partorder.ORDERID = dbo.tbl_repair_visit.ORDERID
WHERE     (dbo.tbl_repair_order.CONTRACT = 'HOM') AND (dbo.tbl_repair_order.ORDERID = 4342) AND (dbo.tbl_repair_visit.Status = 'Parts Req')

1 Ответ

2 голосов
/ 31 июля 2009

Это потому, что в заказе есть детали для обоих идентификаторов инженеров, хотите ли вы их для обоих или нет?

То, что вы можете попробовать, это использовать дополнительный выбор для таблицы, чтобы получить различный идентификатор и идентификатор детали в соединениях

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