Присоединиться к таблице с несколькими уникальными ключами, но вернуть только одну строку - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть список импорта в виде таблицы ниже import_order pk:import_date ,import_no, product_id

--------------------------------------------------------------------------
import_date | import_no | product_id | supplier_id | purchase_cost | qty |
--------------------------------------------------------------------------
2018-01-02  | M0001     | p00001     | s00001      | 2500          | 7   |
2018-01-02  | M0001     | p00002     | s00001      | 2700          | 4   |
2018-01-02  | M0001     | p00003     | s00001      | 3500          | 5   |
--------------------------------------------------------------------------

Я хочу объединить детали поставщика с таблицей ниже

supplier_detail

-------------------------------------------------
 supplier_id | supplier_name   | tel            |
-------------------------------------------------
 s00001      | DevelopGlasses  | +11254421478   |
 s00002      | Operalise       | +11252232547   |
 s00003      | Azuing          | +11245454478   |
-------------------------------------------------

Я хочу запросить такой результат

--------------------------------------------------------------------------------
import_date | import_no| product_id | supplier_id| supplier_name| tel          |
--------------------------------------------------------------------------------
2018-01-02  | M0001    | p00001     | s00001     |DevelopGlasses|+11254421478  |
2018-01-02  | M0001    | p00002     | s00001     |DevelopGlasses|+11254421478  |
2018-01-02  | M0001    | p00003     | s00001     |DevelopGlasses|+11254421478  |
--------------------------------------------------------------------------------

это мой sql

SELECT i.*,s.* FROM import_order i INNER JOIN supplier_detail s ON i.s_id = s.s_id

результат равен

--------------------------------------------------------------------------------
import_date | import_no| product_id | supplier_id| supplier_name| tel          |
--------------------------------------------------------------------------------
2018-01-02  | M0001    | p00001     | s00001     |DevelopGlasses|+11254421478  |
--------------------------------------------------------------------------------

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Использовать левое соединение, внутреннее соединение только для связанных записей

SELECT i.*,s.* FROM import_order i LEFT JOIN supplier_detail s ON i.s_id = s.s_id
0 голосов
/ 25 апреля 2018

Вам необходимо исправить ваше on состояние как

SELECT i.import_date, i.import_no, i.product_id, 
       i.supplier_id, s.supplier_name, s.tel    
FROM import_order i 
INNER JOIN supplier_detail s 
      ON i.supplier_id = s.supplier_id; -- instead of i.s_id = s.s_id
...